关系数据库Relational database,其关系型架构理论是在1970年由IBM研究员E.F.Codd提出的。他将数据以大家所熟知的表格table方式来存储与呈现,再以数学的集合论为基础,将表格与表格之间建立关联以处理复杂的数据关系。
ISBN书号 | 书名 | 价格 | 作者 | 出版商编号 | 出版商名称 | 出版商联络人 | 出版商联络电话 |
9867199901 | 印象派画集 | 500 | 梵谷 | P001 | 史密斯出版社 | 杰克 | 212345678 |
9007777032 | 贝多芬交响乐 | 550 | 贝多芬 | P002 | 贝多芬出版社 | 贝多芬 | 223456780 |
上面的表格如果数据量少的话是不会有什么问题的,数据量逐步增加的话,你会看到问题所在; | |||||||
ISBN书号 | 书名 | 价格 | 作者 | 出版商编号 | 出版商名称 | 出版商联络人 | 出版商联络电话 |
9867199901 | 印象派画集 | 500 | 梵谷 | P001 | 史密斯出版社 | 杰克 | 212345678 |
9007777032 | 贝多芬交响乐 | 550 | 贝多芬 | P002 | 贝多芬出版社 | 贝多芬 | 223456780 |
2562378901 | 时尚名媛衣着 | 500 | 莉萨 | P001 | 史密斯出版社 | 杰克 | 212345678 |
如果有100本书是史密斯出版社发行的?你会发现到问题的所在。
1 浪费存储空间;
2 数据错误率提高;
3 拉架修改上的困难;
要解决上述缺点,最好的方式就是将表格从“出版商名称”开始切割而成为“书籍数据”与“出版商数据”两个表格;而“出版商编号”就是两个表格的关键字段;
book书籍数据(因为为“出版商编号”字段需参照《出版商数据表格》,所以要后于其存在; | publisher出版商数据 | ||||||||
ISBN书号 | 书名 | 价格 | 作者 | 出版商编号 | 出版商编号 | 出版商名称 | 出版商联络人 | 出版商联络电话 | |
9867199901 | 印象派画集 | 500 | 梵谷 | P001 | P001 | 史密斯出版社 | 杰克 | ||
9007777032 | 贝多芬交响乐 | 550 | 贝多芬 | P002 | P002 | 贝多芬出版社 | 贝多芬 | 223456780 | |
2562378901 | 时尚名媛衣着 | 500 | 莉萨 | P001 | |||||
Primary Key | Foreign Key | Primary Key | |||||||
Foreign Key :唯一性限制; | |||||||||
FK是为关联而生的,来源于后一表格的PK字段作为参照; |
create table bookshop.book(ISBN varchar(10) NOT NULL,…,PubliserID Varchar(30) NOT NULL,primary key(isbn),
constraint FK_book_publishedID foreign key(publisherID) references publisher(publisherID))
数据库的数据组织是符合某种语法的,如SQL,也就是符合一定规则,这样,你便可以按照规则进行某些符合语法的其他操作;