mysql - 关于建筑物和平面图的数据库设计查询

标签 mysql database database-design

下午好。我的任务是启动框架(用于最终小组项目),为拟议的公司构建、维护和分配 MySQL 数据库。该公司有许多建筑物,其中可能有多个楼层和多个房间。数据库应存储所有建筑物、它们的 GPS 位置、它们的楼层数、与之对应的平面图图像、它们的所有房间以及它们在建筑物内的位置。

目前,我有一个包含一张表“Buildings”的数据库。在“建筑物”中,我有以下行:ID、名称、纬度、经度、楼层数、平面图图像 (x4)。我假设最多有四层楼。 [可能是个坏主意]

enter image description here

我现在对如何存储所有房间、平面图和房间在平面图中的位置感到困惑。

我最初的想法是为每个建筑物创建一个新表,并为房间号、相应的平面图和位置(纬度/经度)创建行。然而,如果公司有 100 多座建筑,而每座建筑可能只有一层和几个房间,那么我认为这就太过分了。另外,我认为处理 100 个表是不好的做法。

有没有更简单的方法来处理许多建筑物,但房间数量和楼层不同?

如有任何建议,我们将不胜感激!

最佳答案

每个实体都应该有自己的表。这些表将使用 Primary KeysForeign Keys 链接。楼层数不应硬编码,您应该使用 COUNT 函数检索楼层数。

Normalize你的数据库最多 3NF .

这是您的数据库的样子:

Buildings:
BuildingID(PK)
LongName
ShortName
Latitude
Longitude
etc

Floors:
FloorID(PK)
BuildingID(FK)
FloorName
etc

FloorPlans:
FloorPlanID(PK)
FloorID(FK)
FloorPlanName
FloorPlanImage

Rooms:
RoomID(PK)
FloorID(FK)
RoomNumber
Latitude
Longitude
RoomSize
etc

关于mysql - 关于建筑物和平面图的数据库设计查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899806/

相关文章:

python - mongodb 或 redis 用于类似 facebook 的网站?

sql - 帮助合并这两个查询

PHP:服务器检查用户是否登录或注销

mysql - Passport 登录-mysql

mysql - 如何在mysql中明智地过滤列

mysql - 分配给 MySQL 列的数量真的很重要吗?

mysql - 什么时候应该创建一个新的数据库而不是现有数据库中的新表?

python - 在 mysql 中存储倒排索引

php - 从sql php获取所有数据

php - 移动自定义帖子类型的 wordpress 帖子及其类别以及类别的子父关系