アドレス帳DBスキーマ
-
09-06-2019 - |
解決
検討テーブルや自身のメールアドレス:
People (pid, prefix, firstName, lastName, suffix, DOB, ... primaryAddressTag )
AddressBook (pid, tag, address1, address2, city, stateProv, postalCode, ... )
主キーの(一意に識別する各列の pid
.にPKのアドレス帳の構成pidタグ (pid, tag)
.
一部の例ではデータ:
人
1, Kirk
2, Spock
S!電話帳
1, home, '123 Main Street', Iowa
1, work, 'USS Enterprise NCC-1701'
2, other, 'Mt. Selaya, Vulcan'
この例では、カークはアドレス:一つの"家"と"仕事の'.一方で(とう)されることを確認すること.また外部キー(クロス-参考) People
のprimaryAddressTagます。
ミスター-スポックは、シングルアドレスを、タグの'その他'.その後はスポックのアドレス、価値を'その他'すべきもの primaryAddressTag
カラムのためのpid=2.
このスキーマの防止効果は同じ人からの複製また、入力信号についても、当社自身のアドレスによる偶発的に再利用のタグが同時に可能なすべての人に利用アドレスのタグのようなものにしたいんです。
さらに、FK参照 primaryAddressTag
, のデータベースシステムそのものの執行の妥当性マンドタグによってデータベースのニコ参照整合性)で--または他の適を意識する必要がないのです。
他のヒント
なぜ完全に正常化"きゃ"?これはまさにこれこそ正規化は少な汚.
ことを恐れてはいけませんの焼ならします。正規化を行う ジョン-つ, の解決の問題は発生しない。しようとした場合にdenormalizeのデータだけでなカップルに参加しましくなる自分自身の深刻な困難に陥った。うrefactorこのようなデータは後には手ごろなサイズのデータセットは楽しいです。
私が強く示唆するチェックアウト 高層 36号ましたのですが私は使用しませんでしたが、オンライン連絡先ます。ません。実際に、異なるサービスであるか、有料バージョンが高すぎる--ことになる。
このままでは今日、いいステッピングモーターの使用によ平住所ます。していま4-5メールアドレスを使用し、定期的に5"電話番号、3つのアドレスは、複数のウェブサイトやIMプロファイルのいなどの連絡先ます。まだ構築のコンタクト管理システムだと私の建築限界があふれているので(gmail cantactsて鍵付きの単一のメールアドレス)、そのユーザーのたびご連絡の構造としての柔軟性(正常化)します。
声で-D.
私が認識しSQLiteがくっつくのスキーマ(データベースを蓄えるようになりました。
たジョン、などの問題の解決を図る必要があるクラシックnormalisedスキーマとなってしまいます。きれない情報かもしれないけれど、もういえばあの一対多の関係をユーザーのアドレスでいにふっくらとした、理事会の標準溶液と外部キーは、ユーザのアドレス関係といえます。
に該当しまそれぞれのユーザは単一または複数のアドレス、電話番号等 きりの"ユーザー"テーブルの"アドレスのテーブル(primary keyとして非独自の基準ユーザーに、同じ電話番号を複数の列と同じユーザ名の外部キー、照会'すべてのアドレスユーザーのX'とてもシンプルです。
持っていないスクリプトがいmySQLこと聞きそびれてました(笑)。前にしているつもりだったが、いるという二つの論理的保存vCardsアプリケーション:
店のカードのデータベース検索の可能性あり)大きなテキスト文字列で処理することにより、別の部分的なヘルプオーサリング-ツールでクライアント側で行われます。例えば
このように作成されたテーブルが存在しない場合
vcards
(
name_or_letter
varchar(250)NULLでない場合、
vcard
テキストNULLでない場合、
timestamp
タイムスタンプデフォルトのFONTに更新FONT,
主キー(username
)
エンジン=デフォルトのCHARSET=utf-8のデータの整=utf8_bin;
う簡単に実施し、ようにデータが検索でき遅い場合が多いの作品の応募がありました。このをしてきましたことがうことができなくなったせいで ない ので、お楽しみください) その過程にvCardクライアント側とサーバ側のいくつかの美しいモジュールでシェア(またはほかの誰かと共有します。)
ただvCard進化 知 があるとき 一部の変更/一時間後でしてお使います。
最初のものはカード(主にリンクを既存のテーブル-必要がなければこそおで削減を行ないます。第二はカードの定義は、そう呼ばれるプロファイルvCard語).最後に、すべての実績データです。
いましょうDBIx::クラス(いの)全てのデータベースの仕事、この三つのテーブル)のうよりも、私にとっ が明らかにでき締め付けの種類に合わせ rfc2426 細かい で、それぞれのデータはテキスト文字列になります。)
の理由によるのかを正常にアドレスからの人物がすでに持っている アドレステーブルのデータベースではこのようなものための非ユーザーの詳細を入力します。
CREATE TABLE `vCards` (
`card_id` int(255) unsigned NOT NULL AUTO_INCREMENT,
`card_peid` int(255) DEFAULT NULL COMMENT 'link back to user table',
`card_acid` int(255) DEFAULT NULL COMMENT 'link back to account table',
`card_language` varchar(5) DEFAULT NULL COMMENT 'en en_GB',
`card_encoding` varchar(32) DEFAULT 'UTF-8' COMMENT 'why use anything else?',
`card_created` datetime NOT NULL,
`card_updated` datetime NOT NULL,
PRIMARY KEY (`card_id`) )
ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='These are the contact cards'
create table vCard_profile (
vcprofile_id int(255) unsigned auto_increment NOT NULL,
vcprofile_version enum('rfc2426') DEFAULT "rfc2426" COMMENT "defaults to vCard 3.0",
vcprofile_feature char(16) COMMENT "FN to CATEGORIES",
vcprofile_type enum('text','bin') DEFAULT "text" COMMENT "if it is too large for vcd_value then user vcd_bin",
PRIMARY KEY (`vcprofile_id`)
) COMMENT "These are the valid types of card entry";
INSERT INTO vCard_profile VALUES('','rfc2426','FN','text'),('','rfc2426','N','text'),('','rfc2426','NICKNAME','text'),('','rfc2426','PHOTO','bin'),('','rfc2426','BDAY','text'),('','rfc2426','ADR','text'),('','rfc2426','LABEL','text'),('','rfc2426','TEL','text'),('','rfc2426','EMAIL','text'),('','rfc2426','MAILER','text'),('','rfc2426','TZ','text'),('','rfc2426','GEO','text'),('','rfc2426','TITLE','text'),('','rfc2426','ROLE','text'),('','rfc2426','LOGO','bin'),('','rfc2426','AGENT','text'),('','rfc2426','ORG','text'),('','rfc2426','CATEGORIES','text'),('','rfc2426','NOTE','text'),('','rfc2426','PRODID','text'),('','rfc2426','REV','text'),('','rfc2426','SORT-STRING','text'),('','rfc2426','SOUND','bin'),('','rfc2426','UID','text'),('','rfc2426','URL','text'),('','rfc2426','VERSION','text'),('','rfc2426','CLASS','text'),('','rfc2426','KEY','bin');
create table vCard_data (
vcd_id int(255) unsigned auto_increment NOT NULL,
vcd_card_id int(255) NOT NULL,
vcd_profile_id int(255) NOT NULL,
vcd_prof_detail varchar(255) COMMENT "work,home,preferred,order for e.g. multiple email addresses",
vcd_value varchar(255),
vcd_bin blob COMMENT "for when varchar(255) is too small",
PRIMARY KEY (`vcd_id`)
) COMMENT "The actual vCard data";
このなのSQLがいりませんでした。