問題タブ [data-modeling]
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.
design-patterns - 高レベルの設計パターンか、車輪を再発明しないか
プログラミングの聖杯は、一度問題を解決し、その解決策を永遠に継続的に再利用することです。それでも、最善を尽くしたにもかかわらず、よく知っている問題をやり直していることがよくあります。GoF の設計パターンは別として、カレンダー、コンテンツ管理、個人/組織のアドレス帳などを設計したことが何度かあります。
一般的な高レベルのビジネス設計を熟読できる優れたリソース (書籍、Web サイトなど) があるかどうかを知りたいです。私のプロジェクトと私が発見する可能性のあるパターンとの間の要件は異なることを認識していますが、問題の核心は同じままであり、苦労して得た多くの経験から引き出すことができると期待しています. さらに、これはオタクですが、デザインが生まれるプロセスと決定の背後にある理論的根拠について読むことを楽しんでいます. ショップ、スタートアップ、コーダーがデザインについて透明性を保っているのが好きです。(例: 37Signals、Garret Dimon)
この投稿ではこの件に触れ、これらの高レベルの設計パターンを「機能設計パターン」と呼んでいますが、それが私が説明している一般的な用語であるかどうかはわかりません。「Functional Design Patterns」で検索してもあまりヒットしませんでした。「Domain-Specific Design Patterns」と「Data Model Design Patterns」も検索しましたが、後者は興味深い結果を提供したので、これはより的を射ているかもしれません。私が何を言おうとしているのか、どの用語で分かりますか?良いリソースはありますか?新しいデザインを透過的に紹介している他のショップ/コーダーはありますか?
mysql - mysqlでカスタム自動インクリメント関数を作成するのに役立ちます
複数のテーブル間で指定された列の一意性を維持できる自動インクリメント関数を作成したいと思います。
これはmysqlの標準関数ではサポートされていないことを理解していますが、これは手動で実行できるようです。誰かが私を正しい方向に向けることができますか?
ありがとう
mysql - データベースモデルと計算されたバランス、mysql
初めてDBモデルを自分で作成しようとしているアプリプログラマーからの別の質問。
私のアプリには、ユーザー、アカウント、トランザクションがあります。私は最初、すべてのテーブルを3NFで持っていました(またはそう信じています)。次に、ユーザーにバランスフィールドを追加することにしました。これは主に、コードがオープンソースになり、PHPコードを変更してシステムのビジネスロジックを台無しにしたくないためです。したがって、トリガーとストアドプロシージャは、バランスを更新します。
これで、ユーザーがアカウントページに、残高列で行ったすべてのトランザクションのリストを表示するという新しい要件があります。これにより、ユーザーは、トランザクションごとに残高がどのように変化するかを確認できます。もちろん、トランザクションとユーザーは異なるテーブルにあります。
それについてどうやって行くのですか?私の現在のソリューションスケッチでは、transaction_idとuser_idへの外部キーを持つbalance_historyテーブルが表示されます。他に何か提案はありますか?ありがとう。
database-design - 「アップグレード」エンティティを製品注文データベース設計に追加するにはどうすればよいですか?
私はeコマースWebアプリケーションのデータベース設計に取り組んでいます。この質問では、設計を簡略化し、質問に関連する部分のみを示しています。
このシナリオでの私の関心事(エンティティ)は、、、Products
およびUpgrades
ですOrders
。
Products
およびは、このOrders
タイプのデータベース設計の一般的な方法でOrderItems
、多対多の関係を作成するためのテーブルと関連付けられています。
今、私はUpgrades
ミックスに追加する方法を考えています:
- an
Upgrade
は1つ以上に対して有効ですProducts
OrderItem
ゼロ以上の有効なものを含めることができますUpgrades
たとえば、OrderItems
注文番号1を作成する際にこれらのレコードがあるとします。
そして、アップグレード#1を製品#1と#2に適用したいと思います...
Upgrades
テーブルとテーブルを追加することを想像できます。これにより、特定の(の行)にOrderItemUpgrades
任意の数を適用できます。Upgrades
OrderItem
Order
これは、の「アプリケーション」をモデル化するUpgrade
ことだと思います。Product
Order
私の質問は、与えられたものの与えられたものの「妥当性」をどこでモデル化するのかUpgrade
ということです。アップグレードと製品(または別のデータベースレイヤーソリューション)に関連するテーブルProduct
を追加する必要がありますか?ValidProductUpgrades
それとも、そのビジネスロジックはアプリケーション層に属しますか?
sql - 公開する前に承認する必要があるユーザープロファイルの編集を保存するにはどうすればよいですか?
管理者によって承認されるまで、ユーザーがプロファイルに対して行った編集を、ライブに移行したり、既存のライブデータに影響を与えたりしないように保存する方法を理解しようとしています。編集されたプロファイル用の2番目のテーブルがあり、承認時にデータをコピーしますか?すべてを1つのテーブルに保持し、編集可能なすべてのフィールドの_tmpコピーを持っていますか?このためのベストプラクティスはありますか?
あなたの考えをありがとう。
.net - SQLデータベースで色を表現する最良の方法は?
.Net と SQL Server 2008 を使用している場合、データベースに色を保存するための最良の方法は何ですか?
編集:
色から欲しいのは、それを取得して、指定された色で画面に何かを描画できることだけです。それに対してクエリを実行できる必要はありません。
sql - データベース設計
私は今ウェブアプリを作っています、そして私はデータベース設計に頭を悩ませようとしています。
ユーザーモデル(ユーザー名(主キー)、パスワード、電子メール、Webサイト)がありますエントリモデル(ID、タイトル、コンテンツ、コメント、commentCount)があります
ユーザーは、エントリに1回だけコメントできます。これを行うための最良かつ最も効率的な方法は何ですか?
現在、ユーザー名(ユーザーモデルから)とエントリID(エントリモデルから)を持つ別のテーブルを考えています。
したがって、エントリ4のコメントを一覧表示するには、id=4を検索します。
補足: commentCountを保存する代わりに、必要なときに毎回データベースからコメント数を計算する方がよいでしょうか?
sql - アドレス テーブル内の列の最適なバランスはどれだと思いますか?
アプリケーションを作成するたびに、システムのアドレスを格納する「アドレス」テーブルを作成していることに気づきます。
「アドレス」テーブル (複数のアドレスを正規化する場合はテーブル) 内にどの列を作成し、その背後にある理由は何ですか?
data-modeling - オートバイ データベース (メーカー/モデル/製造年)
これは、技術的な問題ではなく、リソースの問題です。
写真 (オートバイ) を分類する必要があるクライアントのために Web サイトを構築しており、モデル/年/製造年のデータベースを探しています。
そのようなデータベースがどこにあるか知っている人がいたら教えてください。
sql - nvarchar(max) の説明用に別の表が必要ですか
私の非常に前の会社の 1 つで、テキスト型の列に長い説明を格納する別のテーブルを使用していました。これは、テキスト タイプに伴う制限のために行われたと思います。
現在取り組んでいる既存のアプリケーションのテーブルを設計していますが、この質問が頭に浮かびます。アイテムの長い説明を varchar(max) 列の同じアイテム テーブルに格納することに共鳴しています。この列のインデックスを作成できないことは理解していますが、これらの列で検索を行うことはないので問題ありません。
これまでのところ、この列を別のテーブルに分離する理由はわかりません。
何か不足している場合、または varchar(max) の同じテーブルに説明を保存するのが良い方法である場合は、入力してください。ありがとう!