サンプルショップデータベース

レッスンの例題はすべて、顧客、商品カタログ、注文、従業員を含むこのショップデータベースで実行します。約5万行あるため、グループ化やインデックスの動きも実データに近い形で確認できます。

クエリを書いていてテーブル名や列名を確かめたいときは、このページを参照してください。

以下の内容はデータベースファイルから読み出しているため、アプリで開くサンプルと一致します。

等幅で書かれた列名が、実際に打ち込む名前です。備考欄には、その列についてデータベースが知っていることが並びます。

  • 主キー — 行を特定する値です。重複せず、空にもなりません。
  • 必須 — 空にできない列(NOT NULL)です。この印がない列は NULL を持てます。NULL は絞り込みのレッスンで扱います。
  • → テーブル.列 — 外部キーです。その列は別のテーブルの値を持ちます。結合はこれをたどります。
  • 一意 — 同じ値を持つ行が2つあってはいけない列です。upsert はここで衝突を検出します。
  • インデックスあり — データベースがこの列の並び替え済みのコピーを持っているので、絞り込みや並べ替えが速くなります。最後のレッスンで詳しく説明します。

商品カタログ

categories 33 行

列型備考
idINTEGER主キー
nameTEXT必須, 一意
descriptionTEXT
parent_idINTEGER→ categories.id, インデックスあり
sort_orderINTEGER必須, 既定値 0
is_activeINTEGER必須, 既定値 1

products 400 行

列型備考
idINTEGER主キー
category_idINTEGER→ categories.id, 必須, インデックスあり
nameTEXT必須
descriptionTEXT
skuTEXT必須, 一意
priceREAL必須, インデックスあり, 既定値 0
costREAL必須, 既定値 0
stock_quantityINTEGER必須, 既定値 0
weight_kgREAL
attributesTEXT
is_activeINTEGER必須, 既定値 1
created_atTEXT必須
updated_atTEXT必須

product_images 1,024 行

列型備考
idINTEGER主キー
product_idINTEGER→ products.id, 必須, インデックスあり
urlTEXT必須
alt_textTEXT
sort_orderINTEGER必須, 既定値 0
is_primaryINTEGER必須, 既定値 0

tags 15 行

列型備考
idINTEGER主キー
nameTEXT必須, 一意

product_tags 624 行

列型備考
product_idINTEGER主キー, → products.id
tag_idINTEGER主キー, → tags.id

suppliers 12 行

列型備考
idINTEGER主キー
nameTEXT必須
contact_nameTEXT
emailTEXT
phoneTEXT
countryTEXT
ratingREAL
is_activeINTEGER必須, 既定値 1

product_suppliers 579 行

列型備考
product_idINTEGER主キー, → products.id
supplier_idINTEGER主キー, → suppliers.id
supplier_skuTEXT
unit_costREAL必須
lead_time_daysINTEGER必須, 既定値 7

inventory_logs 11,547 行

列型備考
idINTEGER主キー
product_idINTEGER→ products.id, 必須, インデックスあり
change_qtyINTEGER必須
reasonTEXT必須
referenceTEXT
employee_idINTEGER→ employees.id
logged_atTEXT必須, インデックスあり

顧客

customers 1,500 行

列型備考
idINTEGER主キー
first_nameTEXT必須, インデックスあり
last_nameTEXT必須, インデックスあり
emailTEXT必須, 一意
phoneTEXT
birth_dateTEXT
countryTEXT必須, インデックスあり, 既定値 'US'
marketing_opt_inINTEGER必須, 既定値 0
loyalty_pointsINTEGER必須, 既定値 0
created_atTEXT必須
updated_atTEXT必須

addresses 1,959 行

列型備考
idINTEGER主キー
customer_idINTEGER→ customers.id, 必須, インデックスあり
labelTEXT必須, 既定値 'home'
line1TEXT必須
line2TEXT
cityTEXT必須
postal_codeTEXT
countryTEXT必須
is_defaultINTEGER必須, 既定値 0

wishlists 2,493 行

列型備考
customer_idINTEGER主キー, → customers.id
product_idINTEGER主キー, → products.id
added_atTEXT必須

reviews 2,992 行

列型備考
idINTEGER主キー
product_idINTEGER→ products.id, 必須, 一意
customer_idINTEGER→ customers.id, 必須, 一意
ratingINTEGER必須
titleTEXT
bodyTEXT
is_verifiedINTEGER必須, 既定値 0
helpful_votesINTEGER必須, 既定値 0
created_atTEXT必須

notifications 3,000 行

列型備考
idINTEGER主キー
customer_idINTEGER→ customers.id, 必須, インデックスあり
typeTEXT必須
titleTEXT必須
bodyTEXT
is_readINTEGER必須, インデックスあり, 既定値 0
created_atTEXT必須

注文

orders 4,000 行

列型備考
idINTEGER主キー
order_numberTEXT必須, 一意
customer_idINTEGER→ customers.id, 必須, インデックスあり
address_idINTEGER→ addresses.id
shipping_method_idINTEGER→ shipping_methods.id
coupon_idINTEGER→ coupons.id
statusTEXT必須, インデックスあり
subtotalREAL必須, 既定値 0
discountREAL必須, 既定値 0
shipping_costREAL必須, 既定値 0
totalREAL必須, 既定値 0
notesTEXT
ordered_atTEXT必須, インデックスあり
updated_atTEXT必須

order_items 12,091 行

列型備考
idINTEGER主キー
order_idINTEGER→ orders.id, 必須, 一意
product_idINTEGER→ products.id, 必須, 一意
quantityINTEGER必須
unit_priceREAL必須

payments 3,651 行

列型備考
idINTEGER主キー
order_idINTEGER→ orders.id, 必須, インデックスあり
methodTEXT必須
amountREAL必須
currencyTEXT必須, 既定値 'USD'
statusTEXT必須
transaction_refTEXT
paid_atTEXT

shipments 2,319 行

列型備考
idINTEGER主キー
order_idINTEGER→ orders.id, 必須, インデックスあり
carrierTEXT必須
tracking_numberTEXT
shipped_atTEXT
delivered_atTEXT

shipping_methods 5 行

列型備考
idINTEGER主キー
nameTEXT必須, 一意
base_costREAL必須
est_daysINTEGER必須
is_activeINTEGER必須, 既定値 1

coupons 10 行

列型備考
idINTEGER主キー
codeTEXT必須, 一意
discount_typeTEXT必須
discount_valueREAL必須
min_orderREAL必須, 既定値 0
starts_atTEXT必須
ends_atTEXT必須
max_usesINTEGER
used_countINTEGER必須, 既定値 0

従業員

departments 10 行

列型備考
idINTEGER主キー
nameTEXT必須, 一意
descriptionTEXT
created_atTEXT必須

employees 120 行

列型備考
idINTEGER主キー
department_idINTEGER→ departments.id, 必須, インデックスあり
manager_idINTEGER→ employees.id, インデックスあり
first_nameTEXT必須
last_nameTEXT必須
emailTEXT必須, 一意
phoneTEXT
hire_dateTEXT必須
salaryREAL必須, 既定値 0
positionTEXT
is_activeINTEGER必須, 既定値 1

audit_logs 2,000 行

列型備考
idINTEGER主キー
employee_idINTEGER→ employees.id
actionTEXT必須
table_nameTEXT必須, インデックスあり
record_idINTEGERインデックスあり
old_valuesTEXT
new_valuesTEXT
ip_addressTEXT
created_atTEXT必須

設定

settings 8 行

列型備考
keyTEXT主キー
valueTEXT必須
descriptionTEXT
updated_atTEXT必須

ビュー

ビューは保存されたクエリで、テーブルのようにふるまいます。SELECT できますが、ビュー自身の行がどこかに保存されているわけではありません。次の4つは上のテーブルを要約したものです。

v_customer_lifetime 1,500 行

列型備考
customer_idINTEGER
customerTEXT
countryTEXT
ordersTEXT
revenueTEXT
first_orderTEXT
last_orderTEXT

v_low_stock 44 行

列型備考
idINTEGER
skuTEXT
nameTEXT
stock_quantityINTEGER
categoryTEXT

v_order_summary 4,000 行

列型備考
order_idINTEGER
order_numberTEXT
statusTEXT
ordered_atTEXT
customerTEXT
countryTEXT
itemsTEXT
totalREAL

v_product_sales 400 行

列型備考
product_idINTEGER
nameTEXT
skuTEXT
categoryTEXT
units_soldTEXT
revenueTEXT
avg_ratingTEXT
review_countTEXT