ソースコード

8章 データベースの操作2

8.4 テーブルの結合

8.4.2 テーブル:booksの作成

CREATE TABLE books(
  id INT AUTO_INCREMENT,
  isbn CHAR(13) DEFAULT '' NOT NULL,
  title TEXT NOT NULL,
  publisher VARCHAR(50) DEFAULT '' NOT NULL,
  year INT DEFAULT 0 NOT NULL,
  price INT DEFAULT 0 NOT NULL,
  CONSTRAINT id_pri PRIMARY KEY (id),
  CONSTRAINT isbn_unq UNIQUE (isbn)
) ENGINE=InnoDB;

8.4.3 書籍データの入力

第1版では『プログラミング作法』の価格が5940円になっていますが、そのまま読み進めてかまいません。

INSERT INTO books VALUES (1,'9784756144119','The Art of Computer Programming 1','アスキー',2004,10290);
INSERT INTO books VALUES (2,'9784756142818','フリーソフトウェアと自由な社会','アスキー',2003,3360);
INSERT INTO books VALUES (3,'9784894711631','計算機プログラムの構造と解釈','ピアソンエデュケーション',2000,4830);
INSERT INTO books VALUES (4,'9784756136497','プログラミング作法','アスキー',2000,2940);
INSERT INTO books VALUES (5,'9784756140845','ハッカーズ大辞典','アスキー',2002,3990);

8.4.3.1 テーブル:creatorsの作成

CREATE TABLE creators(
  id INT AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  CONSTRAINT id_pri PRIMARY KEY (id)
) ENGINE=InnoDB;

creators.txtのためのLOAD文

LOAD DATA LOCAL INFILE "creators.txt" INTO TABLE creators;

8.4.3.2 書籍とクリエイターの対照テーブル

CREATE TABLE bookCreator(
  id int AUTO_INCREMENT,
  bookId INT NOT NULL,
  creatorId INT NOT NULL,
  role VARCHAR(10) DEFAULT '' NOT NULL,
  CONSTRAINT id_pri PRIMARY KEY (id),
  CONSTRAINT book_fky FOREIGN KEY (bookId) REFERENCES books(id),
  CONSTRAINT creator_fky FOREIGN KEY (creatorId) REFERENCES creators(id)
) ENGINE=InnoDB;
INSERT INTO bookCreator (bookId,creatorId) VALUES
 (1,1), (1,2), (1,3), (1,4), (1,5),
 (1,6), (1,7), (2,8), (2,7), (3,9),
 (3,10), (3,11), (3,3), (4,12), (4,13),
 (4,14), (5,15), (5,14), (5,16);

8.6節から8.8節