質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

1回答

990閲覧

【データベース設計】Excelを入力画面にしてAccessデータベースを参照・更新するにあたってのテーブル設計について

ryoya_access

総合スコア34

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

1クリップ

投稿2020/11/10 13:12

Access(2007-2016)で社内DBを作成中です。以下のサイトを参考にして、Excel VBAを用いて、AccessのテーブルをExcelから参照・編集できるようにしています。
Excelを入力画面にしてAccessデータベースを参照・更新・削除する際の便利テクニック

〇編集しているテーブル「T_顧客テーブル」
・ID:オートナンバー型
・顧客名:短いテキスト型
・グループ:短いテキスト型
・〇〇判定A:YES/NO型
・〇〇判定B:YES/NO型
・〇〇判定C:YES/NO型
・担当者1:以下、短いテキスト型
・担当者2:
・担当者3:
・担当者4:
・担当者5:
・前任者1:
・前任者2:
・前任者3:
・前任者4:
・前任者5:
・備考:

開発中のDBには別に「T_社員テーブル」も存在し、最初は短いテキスト型「担当者1~前任者5」の部分を数値型で設計し、「T_社員テーブル」の「社員ID(オートナンバー型)」でリレーションを組んでいました。

しかし「T_顧客テーブル」の各顧客の担当者・前任者を変更する際、エンドユーザーから『コピペなどが容易なExcelで操作したい』との要望をうけ、担当者・前任者の部分は担当者・前任者を一覧にして閲覧するための表形式フォームでしか用いないため他機能への影響はないだろうとの判断から、今は短いテキスト型にして直接社員名を打ち込んでいます。

しかしこれでは、同姓同名の社員が入社した場合混乱してしまいますし、入力時の漢字の変換ミスがあった場合は、データの正確性が損なわれてしまいます。データベースには初めて触る素人ながら、正規化がまるで出来ていないことはわかるのですが、➀データベースの形を適切なものに保ちつつ、エンドユーザーの希望に応えるにはどのように設計するのが正しいのでしょうか。

また併せて、**➁AccessのテーブルをExcelから編集したいという場合、基本的には「Excelを入力画面にしてAccessデータベースを参照・更新・削除する際の便利テクニック」のようなやり方で行うのが一般的なのでしょうか。**他に一般的なやり方があれば伺いたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/11/10 13:22

「正規化がまるで出来ていないことはわかるのですが、➀データベースの形を適切なものに保ちつつ」 の部分が矛盾しており、質問の意図が不明瞭になっています。 「データベースの形を適切なもの」というのは正しい正規化が行われたものという解釈が一般的です。 そのため「保つ」という表現が当てはまりません。 「データベースの形を適切なもの」を重視するのであれば正規化をするべきですし、「現在の形を保つ」のを優先するのであれば正規化ができません。
ryoya_access

2020/11/10 13:54

コメントありがとうございます。混乱し現状を整理できていないままに投稿してしまっていました。 gentaro様のコメントを受けて考え直したところ、「正規化は必ずすべきなのか、業務に応じてそれを破っても良いのか」という問いに落ち着きました。 いくつかのサイトを見たところ様々な意見がありましたが、「正規化は絶対」というわけではないようなので、判断のもとになる論点を抑えて自分なりに決定することにします。ありがとうございました。
gentaro

2020/11/10 14:08

仰るとおり、正規化はRDBMSを最適な形で扱う上での「手段」ではありますが、目的ではありません。 意図して正規化を崩すケースは普通にあります。 問題は、「データベースの形を適切なもの」とだけしか書かれていないと、第三者にとっては本当にそれが最適な形なのかを判断する術がなく、そうである以上は一般的な最適解としての「正規化はするべき」というスタンスしかとりようない事にあります。 もし「この正規化崩しの設計はこういう意図があるため変更できない」という説明ができていて、それが客観的に納得されるようなものであれば、それを前提に話を進めることはできるかもしれません。 しかしながら、それを抜きに「どうしたら正しいですか?」というふわっとした質問をされても、第三者には答えようがないという事です。
ryoya_access

2020/11/11 01:05

RDBMS、正規化、また当分野におけるコミュニケーションのあり方について、大変勉強になりました。 丁寧にフォローしてくださりありがとうございます。
guest

回答1

0

自己解決

コメント通りです。
最終的にどうしたか、解決方法の決定後に記載します。

投稿2020/11/10 13:56

ryoya_access

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問