簡體   English   中英

觸發器還是T-SQL?

[英]Triggers or T-SQL?

我正在嘗試為我的網站制作通知系統:

這是表結構

notification
-----------------
id (pk)
userid
notification_type (for complexity like notifications for pictures, videos, apps etc.)
notification
time


notificationsRead
--------------------
id (pk) (i dont think this field is required, anyways)
lasttime_read
userid

現在我的理解是,添加通知時,我們需要找到用戶朋友,並將所有這些行插入notification表中,對嗎? 如果這是正確的,那么實現此目標的最佳方法是什么?

  1. 觸發器?
  2. 編寫T-SQL(服務器端的sql查詢)以選擇所有好友,然后使用SQL批量復制?

良好的關系方法是設置表,以便有一個人員表。 每個人都有一個唯一標識他們的主鍵。 然后,另一個表將Peoplekey鏈接為朋友。 有幾種解決方法,但作為一個粗略的例子:

People
---------------------------------------
PeopleKey | Name | <other profile data>

然后,您便有了一個表格,可以將人們作為朋友彼此聯系起來。

Friendships
----------------------------------------------------------------------
PeopleKey |  FriendKey (fk to peoplekey) |  <details about friendship>

然后,您會在通知表中看到某人已做某事。

Notification
-----------------------------------------------------------
NotificationKey | PeopleKey | Date | <notification details>

通過查詢和您的友誼關系,您可以獲取一個人的所有朋友的所有通知:

select notification.* from notification inner join 
friendships on friendships.peoplekey = notification.peoplekey
where date = @importantdate 

這種關系可以顯示很多,而不必存儲重復的數據。 還有1000種其他方式可以將表連接,查詢或鏈接到友誼和事件。 因此,例如,您可以說顯示所有事件,其中peoplekey是我的朋友之一。 顯示所有活動,其中Peoplekey只是我的朋友之一,等等,等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM