繁体   English   中英

数据库设计结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM