は、SQL ServerのEnterprise Managerの(SQL Server 2000および7.0)を使用して権限を修正しようと、それが権限を表示しようとしている完全な時間を浪費しました。あなたがufnまたはuspまたはvwを持っていたなら、GUIがデータをどのように提示したかによって、物事をまとめるほうが簡単になりました。
あなたがSELECT * FROM Thing
を持っている場合、それは何ですか?ビューやテーブル?開発者としてはうまくいくかもしれませんが、テーブル自体にアクセス権を与えないため、デプロイ時にクラッシュします。ビューやprocsだけです。確かにvwThing
はあなたの血圧を下げます...?
スキーマを使用する場合、スキーマは無関係になります。あなたはあなたのオブジェクトの名前空間を作ることができます。
機能:たとえば、他のスキーマ内のクライアントごとに「データ」のテーブルやその他のオブジェクトはWebGUI
編集を例えば。あなたはテーブル値関数とスカラー関数を持っています。あなたがコード "VerbNoun"のコンセプトを守っているなら、どのようなことが他の手がかりなしにどのように分かっているのでしょうか。 (オブジェクト名は一意であるため、当然のことながら、この現象が発生することはできません)
SELECT dbo.GetName() FROM MyTable
SELECT * FROM dbo.GetName()
あなたがテーブル値関数を示すために複数を使用している場合、これはあまり曖昧であるのに対し、これは
SELECT dbo.GetName() FROM MyTable
SELECT * FROM dbo.GetNames()
間違いなく悪化しています、いくつかの民衆には攻撃的ではありますが;-)
SELECT dbo.sfnGetName() FROM MyTable
SELECT * FROM dbo.tfnGetName()
スキーマを使用しています。名前のあいまいさもありません。
SELECT ScalarFN.GetName() FROM MyTable
SELECT * FROM TableFN.GetName()
「その他の言語」のコメントは適用されません。 SQLは、C#、Java、f#、Ada(OK、PL/SQLの可能性があります)、VBAなどのような構造ではありません。オブジェクトや名前空間の階層はありません。いいえObject.DoStuff
メソッドのもの。
プレフィックスは正気あなたを維持するだけのものになるかもしれませんね...すべての命名規則と同様に
出典
2010-12-28 19:11:07
gbn
はい、私はそれが有用である意見に同意します。私は特に機能について尋ねています。ありがとう。 – AaronLS
私はCのような言語の行に沿ってもっと考えていましたが、オブジェクトには付けられていない関数があるかもしれませんが、それは明らかに使い方の文脈からの関数です。しかし、いずれにせよ、テーブル値とスカラー値の良い点は、単一のfn_接頭辞だけではほとんど達成できないということです。実際に必要とされるのは、そのシナリオが懸念される場合、デモンストレーションした2つの接頭辞です。 – AaronLS
@AaronLS:Cも例です。 SQLはほとんどのクライアント言語に似ておらず、「従来の」前提が当てはまらないかもしれません。私はそれが理にかなっていると言っているわけではありませんが、あなたのコードを追跡するだけで便利です。すべての関数FWIWにスキーマを使用します。関数を動詞で区切ります。 "Calc" =スカラー、 "Get" =テーブルなど – gbn