我正在创建一个小型Web应用程序,目前正在处理我的数据库架构。我有两种表结构选项,但我不确定哪种关系正确,欣赏建议?
选项1
table1
- id (int) [auto increment, pk]
- name (varchar)
table2
- id (int) [auto increment, pk]
- name (varchar)
- table1Id (int) [fk on table1.id]
选项2
table1
- id (int) [auto increment, pk, fk on table3.table1Id]
- name (varchar)
table2
- id (int) [auto increment, pk, fk on table3.table2Id]
- name (varchar)
table3
- table1Id (int) [pk]
- table2Id (int [pk]
欣赏人们的想法。
编辑 - 工作示例:
tblCountries
- id (int) [auto increment, pk]
- name (varchar)
tblCities
- id (int) [auto increment, pk]
- name (varchar)
我的查询将拉出一个城市,然后需要相应的国家/地区。
答案 0 :(得分:1)
您的答案取决于您希望如何处理分布在两个国家/地区的城市。像旧的东德/西德柏林一样,它可以同时在两个国家吗?如果是这样,您必须使用选项2.因此相同的城市行可以与两个不同的国家/地区相关联。
我真的找不到任何城市分为两个国家(试过谷歌)。所以,我会忽略拆分城市案例,只选择选项1.
我更喜欢CityID,CityName,CountryID和CountryName而不仅仅是ID和Name。如果你需要搜索代码,如果你只是使用名称和ID来查找任何内容是不可能的。这实际上取决于您访问数据库的方式。如果您正在使用OOP和/或某些框架,那么对属性使用“ID”和“Name”会更有意义。如果您正在编写过程和直接查询,那么“xxxxID”和“xxxxxName”会更好。无论你选择什么,都要保持一致。