Mysql 数据库设计结构
我是数据库设计新手,从未上过这门课,我在构建数据库和分配主键方面有问题 我有一个城市列表,每个城市有5种公共交通。每种类型的公共交通在每个城市都有不同的票价、主站和CSV文件以及路线协调等。然后,我需要根据路线协调(距离)、价格、所需时间等,每天计算每个城市每种公共交通类型的平均交通成本 表Mysql 数据库设计结构,mysql,database,Mysql,Database,我是数据库设计新手,从未上过这门课,我在构建数据库和分配主键方面有问题 我有一个城市列表,每个城市有5种公共交通。每种类型的公共交通在每个城市都有不同的票价、主站和CSV文件以及路线协调等。然后,我需要根据路线协调(距离)、价格、所需时间等,每天计算每个城市每种公共交通类型的平均交通成本 表城市: city (Primary key) 表公共交通: city, type of transport, ticket price, main station, file1, file2 表结果: c
城市:
city (Primary key)
表公共交通
:
city, type of transport, ticket price, main station, file1, file2
表结果:
city, type of transport, date, cost
我应该如何连接这些表(假设它们的结构正确)?在表公共交通
中,我认为城市
应该是外键,但交通类型
将在每个城市重复,因此我认为它不能成为此表的主键-表结果
的主键相同。主要的想法是,您不希望重复自己。这不仅是一项开销,而且当您希望更改表示同一事物的多个条目时,也很容易出错
有多种方法可以帮助您确保数据的格式易于维护和使用
您不需要成为了解哪种形式起什么作用的专家,但在数据库设计方面,必须能够识别哪些形式应保持分离
你应该列出你所知道的:
- 不同的城市
- 不同类型的交通工具
- 不同的票价
- 不同的电台
如果为所有这些对象创建一个单独的表,那么很容易将它们按行链接在一个表中,然后在更大的范围内表示某个对象。每个条目都应该有一个单独的id作为主键,您需要能够允许(例如)多个城市使用相同的名称,因此如果它们要作为主键,则不能保留唯一的值
例如,现在很容易确定一个城市的路线,一个城市可以有多条路线
route_id | city_id | route_name
1 2 test1
2 2 test2
然后,您可以添加另一个表来表示哪种传输与这种特定的路由绑定
route_id | transport_id
1 3
2 4
然后,您可以创建一个新表,其中包含作为路线一部分的站点的点,甚至可以确定它是否为主要路线
route_connected_id | route_id | station_id | main_route
1 1 2 1 // a main route
2 1 3 0 // not a main route
而且它继续下去,分离最简单的条目允许您创建复杂的关系,您所要做的就是链接ID
这是一个基本的想法,希望能让你开始,不管你觉得它是否有用,然后我建议你看看我建议的阅读材料,即数据库规范化。哦,我没有这样看,它是有实际意义的。谢谢。@John,不客气。如果您满意地将答案标记为已接受,请随意勾选答案旁边的复选标记。如果您希望等待更好的答案,您可以再等一段时间,但我不会指望它。