C# 多个用户,但将数据存储在同一个表中
大家好,我对数据库一般来说是新手,所以请原谅我下面的noob问题,但我确实需要帮助 我设计了一个包含4个表的数据库。我已经在C#中创建了一个应用程序,它将在应用程序运行过程中在这4个表中存储一些值。但是,当应用程序只有一个用户时,这一切都可以正常工作,但是如果多个用户将使用在ASP.NET页面中运行的同一个应用程序,那么他们将访问和更改4个表中的数据,问题很快就会出现C# 多个用户,但将数据存储在同一个表中,c#,asp.net,database,C#,Asp.net,Database,大家好,我对数据库一般来说是新手,所以请原谅我下面的noob问题,但我确实需要帮助 我设计了一个包含4个表的数据库。我已经在C#中创建了一个应用程序,它将在应用程序运行过程中在这4个表中存储一些值。但是,当应用程序只有一个用户时,这一切都可以正常工作,但是如果多个用户将使用在ASP.NET页面中运行的同一个应用程序,那么他们将访问和更改4个表中的数据,问题很快就会出现 我的问题是,如何防止这种情况发生?我希望每个用户都有自己的唯一用户名,然后使用该用户名在表中区分它们,但我对数据库的了解仅限于知
我的问题是,如何防止这种情况发生?我希望每个用户都有自己的唯一用户名,然后使用该用户名在表中区分它们,但我对数据库的了解仅限于知道如何实现这一点。请帮助?假设您今天有下表: FavoriteFood ————————————— FoodId FoodName 然后,您需要将
User
表与FavoriteFood
表关联起来。一种方法是向FavoriteFood
表中添加外键。给它一个名为UserId
的新字段:
FavoriteFood
—————————————
FoodId
UserId
FoodName
那可以,但我不满意。此数据库未规范化!假设你以后想储存食物的卡路里信息。将名为carries
的字段添加到FavoriteFoods
表中。当您用数据填充该字段时,您会注意到您多次输入相同的数据。您的所有用户都喜欢香蕉,因此表中的香蕉条目数量与用户数量相同。你必须反复输入完全相同的卡路里信息。相反,您应该在表中只保留一次食物的所有信息,并使用完全独立的表将食物映射到用户:
Food
—————————
FoodId
FoodName
Calories
FavoriteFood
—————————————
FoodId
UserId
假设您今天有下表: FavoriteFood ————————————— FoodId FoodName 然后,您需要将
User
表与FavoriteFood
表关联起来。一种方法是向FavoriteFood
表中添加外键。给它一个名为UserId
的新字段:
FavoriteFood
—————————————
FoodId
UserId
FoodName
那可以,但我不满意。此数据库未规范化!假设你以后想储存食物的卡路里信息。将名为carries
的字段添加到FavoriteFoods
表中。当您用数据填充该字段时,您会注意到您多次输入相同的数据。您的所有用户都喜欢香蕉,因此表中的香蕉条目数量与用户数量相同。你必须反复输入完全相同的卡路里信息。相反,您应该在表中只保留一次食物的所有信息,并使用完全独立的表将食物映射到用户:
Food
—————————
FoodId
FoodName
Calories
FavoriteFood
—————————————
FoodId
UserId
如果你愿意在需要的时候打开你的连接,并在完成后立即关闭它们,那么什么都不会发生。多个用户同时打开连接和插入数据的几率极低。您还可以创建一个锁定机制,为用户#1打开与数据库的连接,您可以向其他用户显示错误,或者在锁定到位时让应用程序等待。@Stefan我想他担心用户能够查看彼此的数据,并不是说他担心并发事务。@DaveZych这确实是另一种解释问题的方式。我猜这个问题并没有提供任何关于真正被问到什么的清晰信息。好吧,让我进一步解释。我的应用程序使用数据库存储其变量的值,作为数据库表中的临时存储。唯一的静态数据是用于填充应用程序的一个表中的信息。其余的表根据用户在应用程序上的选择而有所不同。我想要的是允许任意数量的用户同时或独立地访问我的应用程序,但仍然允许他们访问相同的表,而无需创建同一组表的多个实例。这有意义吗?如果你想在需要的时候打开你的连接,并在完成后立即关闭它们,那么什么都不会发生。多个用户同时打开连接和插入数据的几率极低。您还可以创建一个锁定机制,为用户#1打开与数据库的连接,您可以向其他用户显示错误,或者在锁定到位时让应用程序等待。@Stefan我想他担心用户能够查看彼此的数据,并不是说他担心并发事务。@DaveZych这确实是另一种解释问题的方式。我猜这个问题并没有提供任何关于真正被问到什么的清晰信息。好吧,让我进一步解释。我的应用程序使用数据库存储其变量的值,作为数据库表中的临时存储。唯一的静态数据是用于填充应用程序的一个表中的信息。其余的表根据用户在应用程序上的选择而有所不同。我想要的是允许任意数量的用户同时或独立地访问我的应用程序,但仍然允许他们访问相同的表,而无需创建同一组表的多个实例。这有意义吗?感谢您的回复,尽管我需要了解更多关于外键的信息才能确定此解决方案是否适合我的应用程序。感谢您的回复,尽管我需要了解更多关于外键的信息才能确定此解决方案是否适合我的应用程序。