データベース一覧

プライマリキーの属性、桁数について考える

プライマリーキーは主キーとも言われ、データベースを正規化するためには必須の情報です。
もちろん、プライマリーキーをつけなくても、テーブルは作成できるソフトは多々ありますし
ほとんです。ただでもそれでは、データベースソフトを使っている意味があまりないですし
テキストファイルやCSVファイル、エクセルと変わらないですね。

この世にひとつしかない、データを保全しながら保管する役割がプライマリーキー主キーですので
まずは、テーブルの最初の項目は主キーにしてみましょう。

そして、キーの作り方ですね。どのようなキーがシステム上望ましいかによって決まると思います。

以下のパターンが考えられます。まずパターンを上げてそれからどれが好ましいいか考えてみましょう。

1.オートインクメントにしてデータベースのソフトにカウントアップさせるやり方
2.自分自身でカウンターテーブルを持って割り振るやりかたと
3.複合キー(プライマリを複数もたせるやりかた)
4.都度かぶらないやりかたを生成する

まず、1はWEB上のトランザクション(やり取り)が多いテーブルは望ましいかと思います。
ちなみにACCESSでオートインクルメントを使用しテーブル構築していたら、キーが枯渇してしまった
問題が発生し、以後、キー枯渇のトラウマになってしまいたが、mySQLなどで11ケタくらいもっておけば
1秒ずつインサートが発生しても、まずシステムの寿命分(10年間)は持つと判断してよいかと思います。
ちなみに1年を秒になおすと
315360000秒です。
とにかくキーの割り振りはデータベースまかせ、削除してもそのキーは永遠使われない欠番とさせます。



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。


 




SQLServerで今日の日付を取得する

SELECT CURRENT_TIMESTAMP,GETDATE(),GETUTCDATE()

 

例えば2週間後の日付を取得する場合で
形式をyyyymmddの文字列をして扱いたい場合

CONVERT(VARCHAR,dateadd(dd,14,getdate()),112)

となります。

select文では

select CONVERT(VARCHAR,dateadd(dd,14,getdate()),112) as twoweekafter
from table

とか

select *
from table
where field > CONVERT(VARCHAR,dateadd(dd,14,getdate()),112)

みたいに使えます。



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。


 




SQLServerの復元でエラー

環境 MSSQlserver2005

エラーメッセージは以下

タイトル: Microsoft SQL Server Management Studio——————————

Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)
——————————ADDITIONAL INFORMATION:
デバイス ‘C:\share\***\ソース\ソースコード引渡し\データベース\***\***_backup_20121106\***_backup_20121106.bak’ のメディア ファミリが正しい形式ではありません。SQL Server はこのメディア ファミリを処理できません。RESTORE HEADERONLY が異常終了しています。 (Microsoft SQL Server、エラー: 3241)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=3241&LinkId=20476 をクリック

対応

2008の評価版を入れて再チャレンジしたら復元できた
ということは、MSSQLserverの復元はバージョンにシビアということ



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。