計算機科学のブログ

ほしい物リスト

SQL - SQLite - 賢いテーブル設計 - 正規化の理由 - 1NFの途中

Head First SQL ―頭とからだで覚えるSQLの基本Lynn Beighley(著)、 佐藤 直生(監訳)、 松永 多苗子(翻訳)、 オライリージャパンの 4章(賢いテーブル設計 - 正規化の理由)、p.176(自分で考えてみよう)の解答を求めてみる。

sample2.sql

create table if not exists clown_info
(
    name text,
    last_name text,
    appearance1 text,
    appearance2 text,
    appearance3 text,
    appearance4 text,
    activity1 text,
    activity2 text
);

コード

sample2.py

#! /usr/bin/env python3

import sqlite3

con = sqlite3.connect('temp.db')
cur = con.cursor()

with open('sample2.sql') as f:
    cur.executescript(f.read())

cur.execute('pragma table_info(clown_info)')
for row in cur.fetchall():
    print(row)

cur.close()
con.close()

入出力結果(Terminal, Zsh)

% ./sample2.py
[(0, 'name', 'TEXT', 0, None, 0), (1, 'last_name', 'TEXT', 0, None, 0), (2, 'appearance1', 'TEXT', 0, None, 0), (3, 'appearance2', 'TEXT', 0, None, 0), (4, 'appearance3', 'TEXT', 0, None, 0), (5, 'appearance4', 'TEXT', 0, None, 0), (6, 'activity1', 'TEXT', 0, None, 0), (7, 'activity2', 'TEXT', 0, None, 0)]
kamimura@kamimuras-MacBook ch4 % ./sample2.py
(0, 'name', 'TEXT', 0, None, 0)
(1, 'last_name', 'TEXT', 0, None, 0)
(2, 'appearance1', 'TEXT', 0, None, 0)
(3, 'appearance2', 'TEXT', 0, None, 0)
(4, 'appearance3', 'TEXT', 0, None, 0)
(5, 'appearance4', 'TEXT', 0, None, 0)
(6, 'activity1', 'TEXT', 0, None, 0)
(7, 'activity2', 'TEXT', 0, None, 0)
%