2011-01-31 15 views
0

私はイントロデータベースクラスの課題があります。私は1つのことで困惑しています。 Bookings、Clients、OtherCharges、Payments、Roomsの5つのテーブルがあります。 Clientsテーブルでは、ClientID(PK)、FirstName(必須)、LastName(必須)、Birthdate、Street、City、Province、PostalCode、Phone(電話または電子メールが必要)、Emailまたは電子メールが必要)、クレジットカード(重複を含まない)私は自分のERDをVisioで構築し(指示通りに)、自分のSQLワークシートにすべてのTABLE CREATEを実行しました。私の質問は2つあります: A)Visioで電子メール/電話の要件を表すにはどうすればいいですか?必要な属性のチェックボックスがありますが、どちらも必須ではないため、両方をチェックすることはできません。何がありますか? B)これをSQLでどのように処理できますか?それはCHECK制約ですか?ERDとデータベースの新機能

ご協力いただければ幸いです。ありがとう。

答えて

1

標準のVisio「データベースモデルダイアグラム」を使用している場合は、複数列チェック制約を直接表すことはできません。 2番目の質問では、それはCHECK制約です。

+0

あなたはどのようにその制約に言いますか? CHECK Eメール= NULLでないか、phone = NOT NULLであるか? – mrwienerdog

+0

正確なsystaxはデータベースに依存する可能性がありますが、SQL ServerではCHECK(電子メールはNULLでないか、電話機はNULLではありません) – ThomasMcLeod

+0

本当にありがとうございます。 – mrwienerdog

0

varcharを使用してデータベースレベルで電話と電子メールを送信するだけです。より洗練された検証を実施したい場合は、アプリケーションレベルで実装する方がよいでしょう。

+0

シンプルに見えて申し訳ありませんが、データ型(CHAR、VARCHARなど)は制限を強制することと何が関係していますか?私はインストラクターが必要なフィールド(NULLではない)であるかどうかを区別する必要があると思います。 – mrwienerdog

+0

これは宿題ですが、割り当てを変更することはできません。 – ThomasMcLeod