我正在努力使用数据模型(我使用 MySQL 作为数据库)。我对自己的想法感到不安。如果有人可以提出更好的方法,或者向我指出一些参考资料,我将不胜感激。
数据将具有多种类型的组织。我正在尝试进行 3 级分类(类、类别、类型)。假设我有“意大利餐厅”,它将有以下分类
餐饮服务 > 餐厅 > 意大利菜
但是,一个组织可能属于多个组。餐厅也可能供应中餐和意大利菜。所以它将适合2个分类
餐饮服务 > 餐厅 > 意大利
餐饮服务 > 餐厅 > 中餐
分类参考表如下所示:
ORG_CLASS (RowId, ClassCode, ClassName)
1, FOOD, Food Services
ORG_CATEGORY(RowId, ClassCode, CategoryCode, CategoryName)
1, FOOD, REST, Restaurants
ORG_TYPE(RowId、ClassCode、CategoryCode、TypeCode、TypeName)
100, FOOD, REST, ITAL, Italian
101, FOOD, REST, CHIN, Chinese
102, FOOD, REST, SPAN, Spanish
103, FOOD, REST, MEXI, Mexican
104, FOOD, REST, FREN, French
105, FOOD, REST, MIDL, Middle Eastern
实际的数据表如下所示:
我将允许一个组织最多 3 个分类。我将有 3 个 GroupId,每个指向 ORG_TYPE 中的一行。所以我有我的 ORGANIZATION_TABLE
ORGANIZATION_TABLE(OrgGroupId1、OrgGroupId2、OrgGroupId3、OrgName、OrgAddres)
100,103,NULL,MyRestaurant1, MyAddr1
100,102,NULL,MyRestaurant2, MyAddr2
100,104,105, MyRestaurant3, MyAddr3
在数据添加期间,对话框可以让用户选择 clssa、类别、类型,并且可以使用 ORG_TYPE 表中的 rowid 填充相应的 GroupId。
在搜索过程中,如果三个分类都被选中,它会更具体。例如,如果
餐饮服务 > 餐厅 > 意大利是标准,where 子句将是'where OrgGroupId1 = 100'
如果只选择 2 个级别
餐饮服务 > 餐厅
我必须做'where OrgGroupId1 in (100,101,102,103,104,105, .....)'
- 该列表中可能有一百个
我将禁止班级级别的搜索。那就是我将强制选择一个类和类别
Id 将是整数。我正在尝试查看性能问题和其他问题。
总的来说,这行得通吗?或者我需要把它扔掉并从头开始。