2012-11-28 31 views
5

私は学校のための小さなプロジェクトをする必要があります。データベーステーブルに曜日を格納する最良の方法は何ですか?データベースに曜日を格納する

など。データバックアップのための曜日 - 私はこのような列を使用する必要があります。

backupDays varchar(50) 
1,5       >> monday + friday 
2,3,4     >>tuesday + wednesday + thursday 

私はasp.net MVCプログラムでこのテーブルを使用する必要があり、私はMSSQLデータベースを使用します。

+5

あなたがフィールドに複数の曜日を格納する必要がありますか – NoNaMe

+0

自分でいくつかのことを試したことがありますか? –

+0

はい私はフィールドに週7日まで保存する必要があります。 – m4Nu

答えて

0

私の意見では、の曜日をフィールドに格納する最良の方法は、数字(0..6)として保存することです。しかし、あなたはフィールドに1日以上を保存したいと思うようです。明らかに、1つのフィールドに複数の値を格納することはできません。

create table Course 
(
    CourseId int not null primary key, 
    Name nvarchar(100) not null 
); 

create table CourseDayOfWeek 
(
    CourseDayOfWeek int not null primary key, 
    CourseId int not null references Course (CourseId), 
    Day int not null 
); 

しかし、あなたが本当に(あなたが新しいテーブルを作成する余裕はありません)単一のフィールドに複数の値を格納する必要がある場合は、XMLフィールドや文字列フィールドを使用することができます:あなたは別のテーブルを使用する必要があります。次に、フィールドを手動で解析する必要があります。

6

この場合(1つのフィールドに7つのブール値)、バイナリセットは7ビットしか得られません。したがって、MS SQLで1バイト長フィールドタイプを使用することができます - tinyint。それを操作するにはbitwise operatorsを使用してください。

例えば(バイナリ):

00000001 -Sunday

00000011 - 月曜日と日曜日

00000101 - 火曜日と日曜日

00000111 - 月曜日、火曜日と日曜日

ここでは、詳細と例を見つけることができます:

http://sqlfool.com/2009/02/bitwise-operations/

http://www.mssqltips.com/...

+0

ビットマスクはキーです:) – YvesR

+1

偉大なビットマスクの使用例:http://stu.mp/2004/06/a-quick-bitmask-howto-for-programmers.html – nikoskip

関連する問題