[英]Database design structure
我是数据库设计的新手,从不上课,我在构建数据库和分配主键时遇到了问题。
我有一个城市名单,每个城市有5种类型的公共交通工具。 每种类型的公共交通工具在每个城市都有不同的票价,主站和CSV文件以及路线协调等。 然后我需要每天根据路线协调(距离),价格,花费的时间等计算每种城市公共交通的平均运输成本等。
表cities
:
city (Primary key)
表public transport
:
city, type of transport, ticket price, main station, file1, file2
表results
:
city, type of transport, date, cost
我应该如何连接这些表(假设它们的结构是正确的)? 在表public transport
,我认为city
应该是外键,但是每个城市都会重复type of transport
所以我不认为它可以成为这个表的主键 - 对于表格results
。
主要的想法是你不想重复自我。 当您希望更改代表相同内容的多个条目时,它不仅是开销,而且非常容易出错。
有关数据库规范化的 指导原则可帮助您确保数据位于易于维护和使用的表单上。
在数据库设计方面,您无需成为了解哪种形式可以做什么,但能够确定应该保持分离的内容的专家。
你应该列出你所知道的:
如果为所有这些创建一个单独的表,那么很容易将它们在表中的行中链接在一起,然后表示更大规模的内容。 每个条目都应该有一个单独的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。
这是一个基本的想法,应该有希望让你开始,无论你发现它是否有用,然后我建议你看看我建议的阅读材料,即数据库规范化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.