1

好的,我对 SQL 等是全新的,如果这完全错误,我深表歉意..

我设计了一个我认为正确的 ER 模型,我正在尝试将其转换为关系模型,并希望得到任何关于我在转换它时出错的地方或任何提示的建议。绞尽脑汁。

正如我所相信的那样。。

1-1 关系 实体要么组合在一起,要么将一种实体类型的主键作为外键放置在另一种关系中。

1-m 关系 来自“一侧”的主键作为外键放置在多侧。

mn 关系 使用来自每个实体的主键创建一个新关系,形成一个复合键。

多值属性 创建一个新表,主键使用第一个表,第二个表中使用的属性与主键相同。

所以这是我对关系模型的尝试,PK 为粗体,FK 为斜体

用户:用户 ID FNAME LNAME 用户名密码用户类型电子邮件

客户: USERIDCUST_ID, BIO

管理员: 用户ID ADMIN_ID

艺术家 USERIDARTIST_ID, BIO REC_ID

生产者: PROD_ID,姓名,电子邮件

记录标签: RECORD_ID、名称、描述

专辑: 专辑名称、成本、标题、NOOFSONGS

轨道: 轨道 ID、名称、成本、标题、描述

TRACK REVIEW:取决于 TRACK SO TRACK ID 进入此表 = REVIEW_ID(PK) , TRK_ID(PK) NAME

TRACK PURCHASE TABLE(用户 id 作为外键进入该表) TrackPuchaseID user_id , date

ALBUM PURCHASE TABLE AlbumPuchaseID user_id,日期,数量

流派表?:不确定??

BPM:是多值属性,所以成为单独的表,所以 它.s GenreID BPM

我知道这一切可能都是错的。但是任何帮助都会很棒..解释应该是FK或复合PK等或我缺少哪些表格..

4

2 回答 2

0
  • On album purchase you should have: user_id, date, album_id.
  • At track purchase I don't see why you care about the quantity and you're missing the track_id.
  • review, track, album, user should all include a date. Might be as well interesting to add an last_update_date to the artist and customer.
  • review should include an user_id.

I guess there's other thing left. You will need an Invoice / Invoice_Purchase table to be able to say "customer xyz bought the items 1,2,3,4...", it should be like:

Table Invoice

  • invoice_id
  • user_id
  • date
  • status

Table Invoice_Purchase

  • invoice_id // Id of the invoice
  • purchase_type // the type of the purchase (for eg. 0 means track and 1 means album)

Maybe you should also add a status to your albuns and tracks, this way you can set if a item can be bought or not. And yes, you shouldn't delete them because you'll have the old invoices relaying on it...

Anyways, you should consider later using a software like Navicat do draw the relation part and deploy your DB.

于 2015-01-23T08:36:36.253 回答
0

乍一看,以下是我的一些印象,排名不分先后。

  • 1-1关系:不仅是实体的PK在关联表中定义为FK,也是关联表的PK。这保持了关系的统一性。
  • 多值属性:换句话说,1-m 关系。
  • 没有理由为客户、管理员或艺术家设置单独的 ID 值。其实都叫他们ID。我会说这是一种 m-1 关系,因为用户既可以是客户也可以是艺术家。但是 User 表和其他表之间的关系分别是 1-1。
  • Track 和 Album 没有关系吗?那么 AlbumID 不是 Track 属性吗?
  • 采购表应该有 CustID 而不是 UserID 并且是客户表的 FK。这强制要求将购买者定义为客户。
  • 流派可以是曲目或专辑或两者的属性。专辑通常可以是“乡村”,但有“布鲁斯”曲目、“流行”曲目等。
  • 制片人也一样。会有一位专辑制作人,但可能是由其他人制作的一首或多首曲目。
  • 艺术家也一样。整张专辑可能只有一位艺术家,但“1980 年代最伟大的 40 首热门歌曲”呢?
  • 您可能需要 Artist 和 Label 之间的交集表。一个厂牌可以签约很多艺人,一个艺人可以为很多厂牌工作(虽然一般不会同时)。
  • 我不知道 BPM 是什么。

这应该会让你忙一阵子。

于 2015-01-25T05:36:15.643 回答