私は楽しみのために Facebook と Twitter を組み合わせたものを作っていますが、JDBC のセマンティクスについては 100% 確信が持てません。フィールドを外部キーに設定する方法や、varchar フィールドの文字数を制限する方法がわかりません。
私のコード(助けが必要な場所を示すコメント付き)は次のとおりです
(ns twitface.models.migration
(:require [clojure.java.jdbc :as sql]))
(defn create-tables []
(sql/with-connection (System/getenv "DATABASE_URL")
(do
(sql/create-table :users
[:id :serial "PRIMARY KEY"]
[:email :varchar "NOT NULL"]
[:password :varchar "NOT_NULL"]
[:full-name :varchar "NOT NULL"]
[:pref-name :varchar]
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"])
(sql/create-table :relations
[:id :serial "PRIMARY KEY"]
[:relating-user :numeric] ; foreign key
[:related-user :numeric] ; foreign key
[:status :varchar])
(sql/create-table :posts
[:id :serial "PRIMARY KEY"]
[:user :numeric "NOT NULL"] ; foreign key
[:destination-user :numeric "NOT NULL"] ; foreign key
[:message :varchar "NOT NULL"] ; 180 char limit
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"])
(sql/create-table :comments
[:id :serial "PRIMARY KEY"]
[:user :numeric "NOT NULL"] ; foreign key
[:message :varchar "NOT NULL"] ; 180 char limit
[:created_at :timestamp "NOT NULL" "DEFAULT CURRENT_TIMESTAMP"]))))
どんな助けでも大歓迎です!前もって感謝します!