問題タブ [database-schema]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1161 参照

ruby-on-rails - Rails:djangoのようにActiveRecord::Schemaでデータベーススキーマを作成する方法は?

Rails は好きですが、マイグレーションはあまり好きではありません。

ActiveRecord::Scema ツールを使用して、SQL を使用せず、移行も行わずにデータベースを作成するにはどうすればよいですか?

私はあなたがそれを次のように使うことを知っています:

しかし、これをどのように実行しますか?

私は単に移行が好きではないので、移行の使用をお勧めしないでください。

0 投票する
3 に答える
512 参照

database-design - データベーススキーマによる支援(プラットフォームに依存しない)

私はある種の意見の質問がありますが、同時に正しい答えがあるかもしれません。私は一連の製品を開発しようとしていますが、自分でやっているので、最初から正しくやることを確認したいと思っています。スキーマを何度も書き直しましたが、そのたびに、より良いと思いました。それから私はいくつかの新しいアイデアに出くわすことができました、そしてそれはスキーマで多くの仕事を必要とするか、それは私のスキーマを壊すでしょう。

大学では、データベースの「合理化」(彼らが使用した言葉だと思いますが、かなり離れている可能性があります)について学びました。5つのレベルがあります。私が覚えていることから、レベル3が最も一般的でした。データが繰り返されないようにするのが慣例であり、そのためには、テーブルを小さなテーブルに分割する必要がありました。そして、あなたがそれをどこまで壊したかに応じて、レベルはより高くなりました。ええと、最高レベルが欲しいかどうかはわかりませんが、できるだけ効率的にしたいと思っています。私は4年間のSQLServer2000/2005/2008と2年間のOracle、約6か月のInformix(5年以上前)、ここかそこかでのmySQLと約6か月のAccessを経験しました。私の好みはSQLServerですが、どちらのプラットフォームでもスキーマを同じように効率的にしたいと思います。

これがいくつかのテーブルの疑似スキーマレイアウトです。次に、私が何をしたいのかを説明します。

疑似スキーマに過ぎないことをお詫びしますが、休憩時間に紙でデザインをしているので、今はそれだけですが、行き過ぎる前に質問がありました。私がやりたいのは、すべてが適切に相互に結びついていることを確認することです。私の考えでは、郵便番号は州と市に属していますが、1つの郵便番号に属する市はありません。多くの郵便番号が含まれている可能性があります。郵便番号をManufacturersテーブルに入れると、州と市を取得できるようになります。ただし、他のテーブルでIDを何度も使用したくありません。つまり、ZipCodesとCitiesにStateIDがあるということは、何度も繰り返される可能性があるということです。州は同じ名前の複数の都市を持つことができ、複数の州は同じ名前の都市を持つことができます。しかし、CityNamesテーブル、次にCityStatesテーブル(CityNameIDとStateID)が必要かどうかはわかりません。私は、購入できるロケーションデータベースがあり、おそらく無料で使用でき、これについて心配する必要がないことをよく知っています。ただし、将来的にはスキーマの設計に役立つと思うだけでなく、何か変更が必要になった場合にレイアウトをカスタマイズできるようにしたいので、この理解に取り組みたいと思います。

質問:

  1. その疑似スキーマは、それ自体が正しいように見えますか、それとももっと良いでしょうか(意見)?
  2. それはデータベースの「合理化」と呼ばれていますか、それとも他の何か(正解に投票します)ですか?そして、どこまで遠すぎるか(意見)
  3. Usersテーブル、およびアドレス(Teams、Capitolsなど)を含む他のテーブルもあります。したがって、psuedoスキーマは、理論的に正しい場合、そのようなデータベース(意見)の良い計画になるでしょうか?

いつもありがとうございました。徹底的で首尾一貫した回答に投票します。データベースの専門家またはデータベースの長年の経験を持つ人が望ましいですが、私はすべての答えに耳を傾けます。また、これがコミュニティWikiであるかどうかはわかりませんが、現時点では1つとしてマークしていません。ありがとう。

更新:また、データベースの「合理化」により、結合や場合によってはサブクエリが必要になることを私は知っていることを忘れました。私は通常、LEFT OUTER JOINを悪用しますが、4つの異なるクエリを実行するのではなく、これらのテーブルを結合してアドレスを表示する最も効率的な方法は何でしょうか。ありがとう。

更新:わかりました。これは正規化されすぎているか、十分に正規化されていないか、まったく正規化されていない可能性がありますが、この疑似スキーマの方が好きかどうか教えていただけますか?

住所を取得するには、次のようになります。

あるいは、そのクエリを書くためのより良い方法を知っているかもしれません。しかし、それにもかかわらず、それは最初のスキーマよりも良く見えますか?

0 投票する
1 に答える
2292 参照

sql-server - ADO.NET から SQL Server テーブル スキーマを生成するコード

ADO.NET を使用して CREATE TABLE スクリプトを生成し、特定のテーブルの正確なコピーを作成したいと考えています。

この理由は、持続性テストです。アプリケーションが特定のデータベースに永続化されるかどうかを知りたいです。アプリが問題のデータベースとテーブルを指すようにしたいと思います。アプリは、指定されたテーブルの正確なコピーを使用して新しいデータベースを生成します。したがって、元のデータベースに触れることなく、複製されたテーブルに対して永続性テストを実行できます。完了したら、新しいデータベースを簡単に削除できます。

この野心的なプロジェクトに着手する前に、何か既に存在するかどうかを知りたい. Google を試してみましたが、コードではなく SSMS UI を介してスキーマ生成 SQL を取得する方法しか見つかりませんでした。

0 投票する
15 に答える
575087 参照

ruby-on-rails - 特定の移行をロールバックする方法は?

次の移行ファイルがありますdb\migrate\20100905201547_create_blocks.rb

その移行ファイルを具体的にロールバックするにはどうすればよいですか?

0 投票する
2 に答える
333 参照

mysql - RDBMS では、Course と CourseSession などの Concrete オブジェクトの正式な設計原則はありますか?

RDBMS スキーマの設計において、具体的なオブジェクトの形式的な原則があるかどうか疑問に思います。たとえば、Persons テーブルの場合、各レコードは非常に具体的で一意です。実際、各レコードは一意の人物を表します。

Coursesしかし、 (学校のような)テーブルはどうでしょうか。コースの「一般的なプロパティ」である、説明、単位数、秋 (秋) または春にのみ提供されるものなどを含めることができます。

そして、月曜日、水曜日、または火/木曜日のいずれであるか (午前 10 時から午前 11 時など)CourseSessionsに関する情報time_fromtime_to、それを教えているインストラクター、およびcourse_idコース テーブルへの a を使用して戻ってくる情報を含む actual があります。

したがって、上記の 2 つのテーブルは両方とも必要です。

「具体的」対「抽象的」のテーブル設計の原則はありますか?

更新:ここで「抽象的」とは、コースが抽象的なアイデアであることを意味します...その複数のインスタンスが存在する可能性があります...たとえば、午前10時から11時までの物理学10コースと、午後12時から午後1時までの別のコースなどです。

0 投票する
2 に答える
32772 参照

ruby-on-rails - Rails 3. 本番データベースの作成

Rails 3 で本番データベースを作成し、それにスキーマをロードするにはどうすればよいですか?

私は次のアプローチを試しました...

私。

Ⅱ.

...しかし、どちらも機能しません。

ありがとう。

Debian GNU/Linux 5.0.6;

レール 3.0.0;

Sqlite3 3.7.2。

0 投票する
1 に答える
1104 参照

sql - 主キーが nchar で、他のフィールドが nvarchar である理由はありますか?

私は、小さなデータベースを使用してデータ ドリブン テストを示す MSDN の例を使用しています。簡単なスキーマは次のとおりです。

私の質問は次のとおりです: UserId のデータ型として nchar を選択し、Password のデータ型として nvarchar を選択する根本的な理由は何ですか?

0 投票する
2 に答える
412 参照

mongodb - これを MongoDB でどのようにモデル化しますか?

名前と価格の商品があります。

ユーザーは、購入した製品についてログに記録します。

私はこれが好き。しかし、製品 ID の長さが 12 バイトで、数量と日時が 32 ビット (4 バイト) の整数で、コメントが平均 100 バイトの場合、1 つのログのサイズは 12+4+4+100 = 120 バイトになります。ドキュメントの最大サイズは 4MB であるため、ユーザーあたりのログの最大量は 4MB/120 バイト = 33,333 です。ユーザーが 1 日あたり 10 回の購入を記録すると仮定すると、33,333/10 = 3,333 日 ~ 9 年で 4MB の制限に達します。まあ、おそらく 9 年は問題ありませんが、さらに多くのデータを保存する必要がある場合はどうでしょうか? ユーザーが 1 日あたり 100 回の購入を記録した場合はどうなりますか?

ここで他のオプションは何ですか?これを完全に正規化する必要がありますか?

うーん。リレーショナルに戻ります。

0 投票する
2 に答える
354 参照

ruby - これらのクエリを MongoDB で効率的に実装するにはどうすればよいでしょうか?

リンクには 1 つ以上のタグがあるため、最初はタグを埋め込むのが自然に思えるかもしれません。

これらのクエリはどのように効率的に実装されますか?

  • 1 つ以上の指定されたタグを含むリンクを取得します (指定されたタグでリンクを検索するため)。
  • 繰り返しのないすべてのタグのリストを取得します (検索ボックスのオートコンプリート用)
  • 最も人気のあるタグを取得する (上位 10 個のタグまたはタグ クラウドを表示するため)

リンクを上記のように表現するアイデアは、 MongoNY プレゼンテーションのスライド 38 に基づいています。

0 投票する
2 に答える
2004 参照

sql-server - Wall のような Facebook の DB スキーマ + 「共有リンク」

Facebookのような壁構造のデータベーススキーマを作成しています。ウォールの投稿を保存し、リンクを共有し、ビデオをデータベースに共有する必要があります。今まで私はこのスキーマを作ることができました:

次に、「リンクを共有」および「ビデオを共有」機能を追加するためのスキーマを追加する必要があります。

このスキーマを使用すると、次のようになります。

最初のケース: ウォール ポストが挿入されると、[SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 列が null として挿入され、残りの列には値が含まれます。

2 番目のケース: 「リンク共有」が挿入されると、「[WallText]」列が null として挿入され、残りの列に値が含まれます。

私の場合、70% の確率でウォール ポストが作成され、30% の「リンク」が共有されます。つまり、70% のケースで [SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] が null として挿入されます。 . 今私の懸念は、null 列を挿入したままにしても大丈夫か、または「リンクを共有する」目的で別のテーブルを使用し、次のように別のテーブルを作成する必要があることです。

ビデオをさらに共有するためのスキーマを追加するには、同様の方法で行う必要があります。どの方向に進むべきか教えてください。