Database design 处理存储过程和函数

Database design 处理存储过程和函数,database-design,Database Design,我喜欢数据库设计,目前正在SQLServer2008中开发数据库,我不喜欢的一件事是让所有简单的过程都像“person\u exist”或“get\u person\u data”。如何处理涉及数据库数据的函数和过程?我做得对吗?就我个人而言,我倾向于直接在SQL中为“简单”数据编写查询,而不是为它们创建单独的过程。如果一个查询像SELECT*FROM person一样简单,那么为什么还要费心去查阅所有为它创建正式DB过程的样板文件呢?另外,许多ORM框架可以直接生成这些简单的查询。我会为更复杂

我喜欢数据库设计,目前正在SQLServer2008中开发数据库,我不喜欢的一件事是让所有简单的过程都像“person\u exist”或“get\u person\u data”。如何处理涉及数据库数据的函数和过程?我做得对吗?

就我个人而言,我倾向于直接在SQL中为“简单”数据编写查询,而不是为它们创建单独的过程。如果一个查询像
SELECT*FROM person
一样简单,那么为什么还要费心去查阅所有为它创建正式DB过程的样板文件呢?另外,许多ORM框架可以直接生成这些简单的查询。我会为更复杂的查询保留程序/函数,这些查询应该属于数据库层


当然,这只是我的观点,我已经看到了这两种方式。您还可以认为应该为每个数据库查询创建一个过程、函数或视图,以便在数据库端所做的更改可以与客户端应用程序完全隔离。这种方法有一些优点,但创建所有这些“简单”程序需要更多的工作。

根据OP的评论:

问题是这个数据库将 其他开发人员可能会使用它们 不知道数据库本身

在编写过程时,请考虑基于集合的问题

注意创建过程的方式会导致需要循环来使用它们。如果应用程序需要在一个循环中调用相同的过程N次以获取数据,那么性能将远低于应用程序可以进行单个调用并获取完整的单个数据结果集的情况。想想看,一个过程调用获取头数据,一个调用获取所有子细节(不是每个子调用的循环)


这是我看到很多人在设计“API”类型存储过程时遇到的一个常见问题。

谢谢你的回答,问题是这个数据库将被其他开发人员使用,他们不知道数据库本身…+1,因为这是非常重要的。不幸的是,它与OOP设计完全不一致,所以它通常会被忽略。。。