出租车服务的MySQL数据库设计,需要咨询

时间:2019-01-27 18:30:30

标签: mysql sql database-design foreign-keys

我正在为出租车预订服务创建数据库。我希望您能帮助我复习我的设计,并回答我已经遇到的一些问题。首先让我解释一下逻辑。 将没有用户登录。您将需要提供姓名,姓氏,电子邮件,电话,位置,日期和时间,并且您的输入将被接受。

这是桌子。

CUSTOMER TABLE 

Customer_ID INT (PK,NN,AI,UN)
firstName VARCHAR(45) (NN)
lastName VARCHAR(45) (NN)
Email VARCHAR(50) (NN)
Phone VARCHAR(20) (NN)

RIDE

Ride_ID INT (PK,NN,AI,UN)
pickUpLocation TEXT(50) (NN)
Destination TEXT(50) (NN)
rideDate DATE (NN)
rideTime TIME (NN)
babyOnBoard VARCHAR(45) 

我的问题如下:

  1. 在MySQL Workbench中,TIME带有括号并需要一个参数,否则将不被接受。有哪些参数? TEXT也是如此。 TEXT参数与VARCHAR一样吗?

2。您认为“乘车外键”表应该是什么? rideDate和rideTime?

如果您还有其他建议,希望听听他们的意见。

这是我的第一个数据库,因此请考虑到这一点。

1 个答案:

答案 0 :(得分:0)

  

TIME有括号并需要一个参数,否则将不被接受。有哪些参数?

在MySQL v5.7上,我able to创建了一个rideTime列,但没有这样的括号:

CREATE TABLE test (
  rideTime TIME
);

  

TEXT参数是否与VARCHAR相同?

不。来自documentation(我的重点):

  

TEXT [(M)] [字符集字符集名称] [收集排序规则名称]

     

一个TEXT列,最大长度为65,535(216-1)个字符。如果该值包含多字节字符,则有效最大长度会更少。每个TEXT值都使用2字节长的前缀存储,该前缀表示值中的字节数。

     

可以为此类型指定一个可选的长度M。如果这样做, MySQL将列创建为最小的TEXT类型,其大小足以容纳M个字符长的值。

TEXT类型包括LONGTEXT和TINYTEXT。


  

您认为“乘车外键”表应该是什么? rideDate与rideTime?

外键引用不同表中的一行。因此,假设“客户”与“乘车者”之间的比例为1:M relationship,那么将生成的外键将是CustomerID表中的RIDE列,如下所示:

FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(Customer_ID)

rideDaterideTime并未引用其他表,因此不应将它们用作外键。


我希望这能回答您所有的问题!

相关问题