サーチ…


オートショップデータベース

次の例では、オートショップ事業のデータベースに部門、従業員、顧客、および顧客の自動車のリストがあります。外部キーを使用して、さまざまなテーブル間の関係を作成しています。

実例: SQL fiddle


テーブル間の関係

  • 各部門には0人以上の従業員がいるかもしれません
  • 各従業員は0人または1人のマネージャーを持つことができます
  • 各顧客は0台以上の車を所有している可能性があります

部署

イド
1 HR
2 販売
3 テック

テーブルを作成するSQLステートメント:

CREATE TABLE Departments (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(25) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Departments
    ([Id], [Name])
VALUES
    (1, 'HR'),
    (2, 'Sales'),
    (3, 'Tech')
;

従業員

イド FName LName 電話番号マネージャーID DepartmentId 給料 HireDate
1 ジェームススミス 1234567890 ヌル 1 1000 01-01-2002
2 ジョンジョンソン 2468101214 1 1 400 23-03-2005
3 マイケルウィリアムズ 1357911131 1 2 600 12-05-2009
4 ジョンナトンスミス 1212121212 2 1 500 24-07-2016

テーブルを作成するSQLステートメント:

CREATE TABLE Employees (
    Id INT NOT NULL AUTO_INCREMENT,
    FName VARCHAR(35) NOT NULL,
    LName VARCHAR(35) NOT NULL,
    PhoneNumber VARCHAR(11),
    ManagerId INT,
    DepartmentId INT NOT NULL,
    Salary INT NOT NULL,
    HireDate DATETIME NOT NULL,
    PRIMARY KEY(Id),
    FOREIGN KEY (ManagerId) REFERENCES Employees(Id),
    FOREIGN KEY (DepartmentId) REFERENCES Departments(Id)
);

INSERT INTO Employees
    ([Id], [FName], [LName], [PhoneNumber], [ManagerId], [DepartmentId], [Salary], [HireDate])
VALUES
    (1, 'James', 'Smith', 1234567890, NULL, 1, 1000, '01-01-2002'),
    (2, 'John', 'Johnson', 2468101214, '1', 1, 400, '23-03-2005'),
    (3, 'Michael', 'Williams', 1357911131, '1', 2, 600, '12-05-2009'),
    (4, 'Johnathon', 'Smith', 1212121212, '2', 1, 500, '24-07-2016')
;

顧客

イド FName LName Eメール電話番号 PreferredContact
1 ウィリアムジョーンズ [email protected] 3347927472 電話
2 デビッドミラー [email protected] 2137921892 Eメール
3 リチャードデイビス [email protected] ヌル Eメール

テーブルを作成するSQLステートメント:

CREATE TABLE Customers (
    Id INT NOT NULL AUTO_INCREMENT,
    FName VARCHAR(35) NOT NULL,
    LName VARCHAR(35) NOT NULL,
    Email varchar(100) NOT NULL,
    PhoneNumber VARCHAR(11),
    PreferredContact VARCHAR(5) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Customers
    ([Id], [FName], [LName], [Email], [PhoneNumber], [PreferredContact])
VALUES
    (1, 'William', 'Jones', '[email protected]', '3347927472', 'PHONE'),
    (2, 'David', 'Miller', '[email protected]', '2137921892', 'EMAIL'),
    (3, 'Richard', 'Davis', '[email protected]', NULL, 'EMAIL')
;

イド顧客ID 従業員ID モデル状態総費用
1 1 2 フォードF-150 READY 230
2 1 2 フォードF-150 READY 200
3 2 1 フォードマスタング待ち 100
4 3 3 トヨタプリウスワーキング 1254

テーブルを作成するSQLステートメント:

CREATE TABLE Cars (
    Id INT NOT NULL AUTO_INCREMENT,
    CustomerId INT NOT NULL,
    EmployeeId INT NOT NULL,
    Model varchar(50) NOT NULL,
    Status varchar(25) NOT NULL,
    TotalCost INT NOT NULL,
    PRIMARY KEY(Id),
    FOREIGN KEY (CustomerId) REFERENCES Customers(Id),
    FOREIGN KEY (EmployeeId) REFERENCES Employees(Id)
);

INSERT INTO Cars
    ([Id], [CustomerId], [EmployeeId], [Model], [Status], [TotalCost])
VALUES
    ('1', '1', '2', 'Ford F-150', 'READY', '230'),
    ('2', '1', '2', 'Ford F-150', 'READY', '200'),
    ('3', '2', '1', 'Ford Mustang', 'WAITING', '100'),
    ('4', '3', '3', 'Toyota Prius', 'WORKING', '1254')
;

ライブラリデータベース

このライブラリのサンプルデータベースには、 AuthorsBooks 、およびBooksAuthorsテーブルがあります。

実例: SQL fiddle

著者書籍は、リレーショナル・モデル内の実際のエンティティーの列定義とデータを含んでいるため、 基本表と呼ばれます。 BooksAuthorsは、 BooksテーブルとAuthorsテーブルの関係を定義するため、 Relationship テーブルと呼ばれます。


テーブル間の関係

  • それぞれの著者は1冊以上の本を持つことができます
  • 各本は1人以上の著者を持つことができます

著者

ビューテーブル

イド
1 JDサリンジャー米国
2 F.スコット。フィッツジェラルド米国
3 ジェーン・オースティン英国
4 スコットハンセルマン米国
5 ジェイソン・N・ゲイロード米国
6 プラナフ・ラストギインド
7 トッド・ミランダ米国
8 クリスチャンウェンツ米国

テーブルを作成するSQL:

CREATE TABLE Authors (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(70) NOT NULL,
    Country VARCHAR(100) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Authors
    (Name, Country)
VALUES
    ('J.D. Salinger', 'USA'),
    ('F. Scott. Fitzgerald', 'USA'),
    ('Jane Austen', 'UK'),
    ('Scott Hanselman', 'USA'),
    ('Jason N. Gaylord', 'USA'),
    ('Pranav Rastogi', 'India'),
    ('Todd Miranda', 'USA'),
    ('Christian Wenz', 'USA')
;

書籍

ビューテーブル

イドタイトル
1 ライ麦畑でつかまえて
2 ナインストーリーズ
3 フランニーとズーイー
4 グレート・ギャツビー
5 テンダー・イット・ザ・ナイト
6 高慢と偏見
7 プロフェッショナルASP.NET 4.5でC#とVB

テーブルを作成するSQL:

CREATE TABLE Books (
    Id INT NOT NULL AUTO_INCREMENT,
    Title VARCHAR(50) NOT NULL,
    PRIMARY KEY(Id)
);

INSERT INTO Books
    (Id, Title)
VALUES
    (1, 'The Catcher in the Rye'),
    (2, 'Nine Stories'),
    (3, 'Franny and Zooey'),
    (4, 'The Great Gatsby'),
    (5, 'Tender id the Night'),
    (6, 'Pride and Prejudice'),
    (7, 'Professional ASP.NET 4.5 in C# and VB')
;

BooksAuthors

ビューテーブル

BookId 著者ID
1 1
2 1
3 1
4 2
5 2
6 3
7 4
7 5
7 6
7 7
7 8

テーブルを作成するSQL:

CREATE TABLE BooksAuthors (
    AuthorId INT NOT NULL,
    BookId  INT NOT NULL,
    FOREIGN KEY (AuthorId) REFERENCES Authors(Id),
    FOREIGN KEY (BookId) REFERENCES Books(Id)
);

INSERT INTO BooksAuthors
    (BookId, AuthorId)
VALUES
    (1, 1),
    (2, 1),
    (3, 1),
    (4, 2),
    (5, 2),
    (6, 3),
    (7, 4),
    (7, 5),
    (7, 6),
    (7, 7),
    (7, 8)
;

すべての著者を表示( ライブの例を表示 ):

SELECT * FROM Authors;

すべての書籍のタイトルを表示する( 実例を表示 ):

SELECT * FROM Books;

すべての書籍とその著者を表示します (実際の例を表示 ):

SELECT
  ba.AuthorId,
  a.Name AuthorName,
  ba.BookId,
  b.Title BookTitle
FROM BooksAuthors ba
  INNER JOIN Authors a ON a.id = ba.authorid
  INNER JOIN Books b ON b.id = ba.bookid
;

カントリーテーブル

この例では、 Countriesテーブルがあります。国のためのテーブルは、特に通貨や為替レートを含む金融アプリケーションでは、多くの用途があります。

実例: SQL fiddle

BloombergやReutersのようなMarketデータソフトウェアアプリケーションでは、APIに通貨コードとともに2文字または3文字の国コードを指定する必要があります。したがって、この例の表には、2文字のISOコード列と3文字のISO3コード列があります。


ビューテーブル

イド ISO ISO3 ISONumeric 国名資本 ContinentCode 通貨コード
1 AU AUS 36 オーストラリアキャンベラ OC AUD
2 DE DEU 276 ドイツベルリン EU ユーロ
2 インド 356 インドニューデリーとして INR
3 LA LAO 418 ラオスビエンチャンとして LAK
4 米国米国 840 アメリカワシントン NA 米ドル
5 ZW ZWE 716 ジンバブエハラレ AF ZWL

テーブルを作成するSQL:

CREATE TABLE Countries (
    Id INT NOT NULL AUTO_INCREMENT,
    ISO VARCHAR(2) NOT NULL,
    ISO3 VARCHAR(3) NOT NULL,
    ISONumeric INT NOT NULL,
    CountryName VARCHAR(64) NOT NULL,
    Capital VARCHAR(64) NOT NULL,
    ContinentCode VARCHAR(2) NOT NULL,
    CurrencyCode VARCHAR(3) NOT NULL,
    PRIMARY KEY(Id)
)
;

INSERT INTO Countries
    (ISO, ISO3, ISONumeric, CountryName, Capital, ContinentCode, CurrencyCode)
VALUES
    ('AU', 'AUS', 36, 'Australia', 'Canberra', 'OC', 'AUD'),
    ('DE', 'DEU', 276, 'Germany', 'Berlin', 'EU', 'EUR'),
    ('IN', 'IND', 356, 'India', 'New Delhi', 'AS', 'INR'),
    ('LA', 'LAO', 418, 'Laos', 'Vientiane', 'AS', 'LAK'),
    ('US', 'USA', 840, 'United States', 'Washington', 'NA', 'USD'),
    ('ZW', 'ZWE', 716, 'Zimbabwe', 'Harare', 'AF', 'ZWL')
;


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow