gpt4 book ai didi

mysql - 设计数据库并使用 mySQL 进行查询 - 不确定我是否正确建模?

转载 作者:行者123 更新时间:2023-11-29 16:41:11 24 4
gpt4 key购买 nike

我是数据库设计新手,所以我有点不确定我是否在这里做事。

我正在为假摩托车租赁服务创建数据库。以下是影响我的数据库的事件:

如果新顾客进入商店:

Store customer info,

If they were referred:

Make note of name of referrer

如果之前的客户输入:

Retrieve previous customer info,

**If this customer has an un-returned scooter, they can't borrow another

如果客户租用踏板车,请跟踪:

Date/hour of borrow,

Date/hour of return,

How much paid,

Freeform notes that are categorized, ie Issues while scooter is returned or when used

归还滑板车时:

When it was returned,

Is return late,

Is scooter damaged,

Additional fees for damage / late return

我要对数据库进行的查询:

所有拥有旗帜的人,

所有可用的踏板车,

所有借用的踏板车,

所有后期踏板车,

获得最多推荐的前 5 名的人,

对于一个人,显示该人借用踏板车的所有次数,

对于借用实例,请显示任何额外费用,并且

所有踏板车制造商

这是我想到的(还不是实际的图表,只是不同的表和关系),完全不确定这是否在正确的轨道上: https://imgur.com/a/NzqB0CE

Typed out tables

最佳答案

对。您的设计存在一些问题。 SQL DB 中的想法是“规范化”信息,这意味着数据不会重复。这是需要记住的一件事,另一件事是你必须根据“实体”和这些实体之间的“关系”来思考,而不是对象和 Action 。让我们看看:

CUSTOMER
-name
-email

SCOOTER
-manufacturer
-model

RENTALS
-customerID
-scooterID
-startDate
-plannedEndDate
-actualEndDate

因此,这里的“RENTALS”是一个多对多表,关联可以租用许多踏板车的客户以及在其生命周期内将拥有许多客户的踏板车。 customerID 和 ScooterID 可以是 MySQL 中的自动 ROWID,也可以在特定 ID 字段中显式设置它们。

从此设置中,您可以通过设计查询来获取大量信息:

有滑板车吗?

SELECT * FROM RENTALS WHERE scooterID = X AND plannedEndDate > DATE()

意思是,踏板车已被租用,并将在将来的某个时候归还。

我们有迟到的踏板车吗?

SELECT * FROM RENTALS WHERE plannedEndDate < DATE() AND actualEndDate = NULL

意思是,本来应该归还的滑板车,但没有归还。

等等。希望有帮助!

关于mysql - 设计数据库并使用 mySQL 进行查询 - 不确定我是否正确建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53325306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com