These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Model rebalance and database inconsistencies

First post
Author
Selaria Unbertable
Bellator in Capsulam
#1 - 2015-01-10 14:45:34 UTC
Hello,

I hope this is the right spot to post this, otherwise feel free to move this post.

I'm currently developing a server application using the latest Rhea data dump. I know that CCP is currently in the process of module tiericiding, as stated e.g. in this blog post: http://community.eveonline.com/news/dev-blogs/rebalancing-eve-one-module-at-a-time/.

I was implementing an item filter based on the meta levels (T1, T2, T3, Storyline and faction), which works quite well, except for some items. I perform some joins in order to connect data from different tables. In order to get the tech and meta levels, I join the table invTypes with dgmTypeAttributes on the attributes 422 (tech level) and 633 (meta level). However, it seems that some items do not have a meta level yet, such as Faction Control towers.
The second thing I notices is that T2 items and T3 hulls have the same meta level (5 as shown in the nice graphic in the dev blog), but T3 subsystems have a different one (1, which should be a named T1 item after tiericide). Is that on purpose?

Another thing, which I tried before my current solution, was joining invTypes with the table invMetaGroups via invMetaTypes (attribute 1692 in dgmTypeAttributes), which also did not work for all items.

It would be nice if a CCP employee would take notice of this post since as a developer it's rather annoying to write code that works for most, but not all items, and filtering exceptional cases is a real pain if one bothers at all...


Also, since from the database perspective ships and modules are the same type of data (both are invTypes), why not give T3 ships a separate meta level? 7, 9 and 10 are still free after tiericide, there would be no collisions with modules since there are no T3 modules yet.

Thanks for reading, fly safe o/
Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#2 - 2015-01-10 17:19:34 UTC
The trick is to use an outer join, and then use coalesce to fill in values.

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Selaria Unbertable
Bellator in Capsulam
#3 - 2015-01-11 10:11:18 UTC
Steve Ronuken wrote:
The trick is to use an outer join, and then use coalesce to fill in values.


I do use LEFT OUTER JOIN and IFNULL in order to prevent null values. Coalesce looks even better, thanks for pointing me to that Steve, that saves me from using a nested IFNULL, didn't know that ;)

And I just wanted to point these things out, so someone could take care of that.