哪些数据库表结构是正确的?

时间:2013-12-18 13:37:30

标签: database-design database-schema

我正在创建一个小型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)

我的查询将拉出一个城市,然后需要相应的国家/地区。

1 个答案:

答案 0 :(得分:1)

您的答案取决于您希望如何处理分布在两个国家/地区的城市。像旧的东德/西德柏林一样,它可以同时在两个国家吗?如果是这样,您必须使用选项2.因此相同的城市行可以与两个不同的国家/地区相关联。

我真的找不到任何城市分为两个国家(试过谷歌)。所以,我会忽略拆分城市案例,只选择选项1.

我更喜欢CityID,CityName,CountryID和CountryName而不仅仅是ID和Name。如果你需要搜索代码,如果你只是使用名称和ID来查找任何内容是不可能的。这实际上取决于您访问数据库的方式。如果您正在使用OOP和/或某些框架,那么对属性使用“ID”和“Name”会更有意义。如果您正在编写过程和直接查询,那么“xxxxID”和“xxxxxName”会更好。无论你选择什么,都要保持一致。