【问题标题】:Database Design Inquiry in regards to Buildings and Floor plans关于建筑物和平面图的数据库设计查询
【发布时间】:2016-04-27 20:03:21
【问题描述】:

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

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

我现在不知道如何在平面图中存储所有房间、平面图和房间位置。

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

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

任何建议将不胜感激!

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    每个实体都应该有自己的表格。这些表将使用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
    

    【讨论】:

    • 作为一个简单的问题,是否有首选的方式/数据类型来存储图像?
    • 另外,假设我只得到了一个房间号和一座建筑物,我似乎不知道如何得到一个平面图......
    • @DoveDevic 您不应该将整个图像存储在数据库中,但如果必须,请使用 BLOB。 stackoverflow.com/questions/6472233/can-i-store-images-in-mysql
    • @DoveDevic 查找 INNER JOIN 以获取平面图。您加入所有表并使用WHERE 子句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2020-05-14
    相关资源
    最近更新 更多