作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 线上DVD系统 , mysql , 正规化
时间Fri Jun 1 19:31:33 2007
※ 引述《aiyswu (乐子)》之铭言:
: @@
: 我是某四技资管系学生,目前正在作「系统分析」这门课。
应该会要你们画图吧,ERD、DFD之类的(我学的时候老师是这样教啦 @@)
现在只大概记得 ERD..XD
应该会有两个实体:一个叫会员,一个叫影片,两个实体之间有个租借的关系
照着图来设计,会有三个TABLE,会员、影片、租借
两个实体衍生出来的 TABLE你有建了,一个关系衍生出来的 TABLE前面有人提了
存的东西差不多就那样
: 虽然老师没有要求,一定要弄出介面和资料库。
: 不过有作有加分嘛!正好可以从实做中学习,有压力,比较好学东西。
有压力的确比较好学…所以工作学比较快,薪水就是压力
: 其实我也有自个儿找些网站。
: 例如:http://chensh.loxa.edu.tw/php/B_1.php
: 不过;观念上,还是有些混沌。
: 我们要作的系统及资料库为「DVD线上系统」
: 主要是使一般DVD出租店,能够拥有一个放在网路上,让会员可以在家里
: 上网,就能够得知,某DVD片,是否还有库存,是否可预借,以及查询DVD
: 新片、DVD预借、热门排行、押金余额等等。
: 我的资料库规划出这样↓
: 资料库 DVDonline
: - 资料表 MemberList
: - No(会员编号) int(10) Unsigned , Primary
: - Name(会员姓名) varchar(10)
: - Age(年龄) tinyint(2) Unsigned
通常是存生日,年龄就用算的
: - ID(统一编号) varchar(10)
统编应该也可以唯一辨别是哪位顾客,但忘了是到第几阶才要求要完全分离 @@
: - Phone(联络电话) varchar(15) Unsigned
: - Add(地址) varchar(100)
分到租借资料表里感觉好一点
: - LoanMovie(已借影片) varchar(10)
: - AheadMovie(预借影片) varchar(10)
: - LoanDate(到期日) date
: - 资料表 MovieList
: - MovieNo(影片编号) int(10) Unsigned , Primary
: - MovieName(影片名称) varchar(20)
: - Airect(导演) varchar(20)
: - Actor(演员) varchar(100)
这个栏位应该不符合第一正规化,你们是想把一堆演员都放在这吧XD
: - MFAT(片商) varchar(20)
: - LoanTimes(借阅次数) smallint(5) Unsigned
: - MovieState(影片状态)varchar(20)
: 由於人数仅三人,且都不是很了解资料库,甚至有人没有接触过资料
: 库。所以资料库暂时不规划得很复杂,毕竟连正规化都不会了,所以
: ;影片部份也没有规划栏位来表示影片类型等等。
影片类型对分数影响应该不大XD
: 目前是希望做到二阶正规化,不晓得上面是否已算是二阶正规化呢?
: 相依性的问题,我还是搞不是很清楚。我的资料库都是模仿中原大学
其实我也不大了…但 常变动的值跟 不常变的分开存放效率会比较好,应该满直觉的吧
照着这个想法做应该就差不多了 @@
比如说影片资料表中,基本资料不会变,但借阅次数、状态(这存啥 囧a)会一直变
演员这个栏位会用另一个表存
影片编号,演员…然後一部片用到好几个row 存,然後会发现没有PK,又会多一个流水号
所以有时候为了实作效率会做一些反正规化这样(既然是作业,砍掉栏位也没什麽XD)
p.s.其实效率差比较多的是用一堆join @@
个人觉得分数不在於表建的大,而是能实现每个正规化动作(或其它上课教的)
嗯,就这样。
: 网路策进会的教学影片作的。
: 请各位前辈,指导一下吧@@..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.213.20
※ 编辑: grence 来自: 61.229.213.20 (06/02 02:33)