Linux数据库大比拚[3]

[入库:2005年9月19日] [更新:2007年3月25日]

本文简介:

    编辑site.mm;我将安装路径改成/opt/msql
    构造它:
    make all
    作为root 用户安装它:
    make install
    在构造和安装的mSQL以后,你需要配置它:
  
    作为root,创建msql用户:
    useradd - c “mSQL Administrator” - d /opt/msql - g users msql
    作为root,把目录属权交给msql用户:
    chown - R msql.users /opt/msql
  
    据库设计
  
    编者按:这是涉及可自由地获得的Linux DBMS的系列文章的第二部分。
  
    为了测试并比较3个数据库管理系统,我当然需要一个数据库来管理他们。在读完了《SQL傻瓜书》后,我有了一些如何设计现实的数据库的基本知识,因此我拣选了一特别无聊的真实世界情形(一个因特网书店,其他?)并且写下了一个小型数据库设计以便探讨一点Sql的能力。
  
    在这个数据库里有5个表,BOOK保存可得到的书的登记信息;CUSTOMER包含登记的顾客。对每份订单,BOOKORDER创建一行,参照其顾客。对每个定购的项目,在ORDER_POSITION里引用它的订单号。作为一种奖励,针对书的排名我增加了一RATING表。
  
    下列的SQL代码可装入到一个数据库系统的SQL监控程序并且被接受应该没有任何问题。所有的表在创建前被删除因此确保他们不会在创建之前已经存在。
  
  DROP TABLE BOOK;
  CREATE TABLE BOOK (
  ARTICLE_NO INTEGER PRIMARY KEY,
  AUTHOR_FIRST_NAMES CHARACTER(30),
  AUTHOR_LAST_NAMES CHARACTER(30),
  TITLE CHARACTER(30),
  ISBN CHARACTER(13) UNIQUE,
  WHOLESALE_PRICE NUMERIC(4,2),
  RETAIL_PRICE NUMERIC(4,2),
  COPIES_AVAILABLE INTEGER
  );
  DROP TABLE CUSTOMER;
  CREATE TABLE CUSTOMER (
  CUSTOMER_NO INTEGER PRIMARY KEY,
  FIRST_NAMES CHARACTER(30),
  LAST_NAMES CHARACTER(30),
  STREET CHARACTER(30),
  HOUSE_NO SMALLINT,
  POSTCODE CHARACTER(7),
  TOWN CHARACTER(30),
  ISO_COUNTRY_CODE CHARACTER(2)
  );
  DROP TABLE BOOKORDER;
  CREATE TABLE BOOKORDER (
  ORDER_NO INTEGER PRIMARY KEY,
  CUSTOMER_NO INTEGER NOT NULL,
  ORDERED DATE,
  DELIVERY DATE,
  STATUS CHARACTER(8)
  CHECK (STATUS IN (′ACCEPTED′,
  ′DELAYED′,
  ′SHIPPED′,
  ′RETURNED′,
  ′PAID′)),
  CONSTRAINT CUSTOMER_FK FOREIGN KEY (CUSTOMER_NO)
  REFERENCES KUNDE (KUNDENNAME)
  );
  DROP TABLE ORDER_POSITION;
  CREATE TABLE ORDER_POSITION (
  POSITION_NO INTEGER PRIMARY KEY,
  ORDER_NO INTEGER NOT NULL,
  ARTICLE_NO INTEGER NOT NULL,
  NUMBER SMALLINT,
  CONSTRAINT ORDER_FK FOREIGN KEY (ORDER_NO)
  REFERENCES BOOKORDER (ORDER_NO),
  CONSTRAINT BOOK_FK FOREIGN KEY (ARTICLE_NO)
  REFERENCES BOOK (ARTICLE_NO)
  );
  DROP TABLE RATING;
  CREATE TABLE RATING (
  RATING_NO INTEGER PRIMARY KEY,
  ARTICLE_NO INTEGER NOT NULL,
  SCORE NUMERIC(1,0),
  COMMENT CHARACTER VARYING(300),
  CONSTRAINT BOOK_FK FOREIGN KEY (ARTICLE_NO)
  REFERENCES BOOK (ARTICLE_NO)
  );
  
    当然,这是一个极其简单的数据库。它看上去真实,但是它不适用于真实世界的应。它不保存顾客记录或任何东西,并且它甚至没有书的出版商的列。它只是一个测试环境。
  
    注意我不想花大气力强制CUSTOMER.ISO_COUNTRY_CODE为今天是实际有效的编码。我在代码做了一点限制以测试数据库系统是否接受他们;我没尝试使数据库无懈可击。
  
    改变设计适应PostgreSQL
  

本文关键:Linux数据库大比拚
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top